mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
selfDefending test implementation
This commit is contained in:
@@ -28,26 +28,29 @@ class UnicodeArrayCallsWrapper extends Node_1.Node {
|
||||
return super.getNode();
|
||||
}
|
||||
getNodeStructure() {
|
||||
let environmentName = Utils_1.Utils.getRandomVariableName(), keyName = Utils_1.Utils.getRandomVariableName(), selfDefendingCode = '', node;
|
||||
let code = '', environmentName = Utils_1.Utils.getRandomVariableName(), keyName = Utils_1.Utils.getRandomVariableName(), node;
|
||||
if (this.options['selfDefending']) {
|
||||
selfDefendingCode = `
|
||||
code = `
|
||||
var ${environmentName} = function(){return ${Utils_1.Utils.stringToUnicode('production')};};
|
||||
|
||||
if (
|
||||
${keyName} % ${Utils_1.Utils.getRandomInteger(this.unicodeArray.length / 8, this.unicodeArray.length / 2)} === 0 &&
|
||||
/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/.test(
|
||||
${environmentName}[${Utils_1.Utils.stringToUnicode('toString')}]()
|
||||
) !== true && ${keyName}++
|
||||
) === true || ${keyName}++
|
||||
) {
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)]
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)];
|
||||
}
|
||||
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)];
|
||||
`;
|
||||
}
|
||||
else {
|
||||
code = `return ${this.unicodeArrayName}[parseInt(${keyName}, 16)]`;
|
||||
}
|
||||
node = esprima.parse(`
|
||||
var ${this.unicodeArrayCallsWrapperName} = function (${keyName}) {
|
||||
${selfDefendingCode}
|
||||
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)]
|
||||
${code}
|
||||
};
|
||||
`);
|
||||
NodeUtils_1.NodeUtils.addXVerbatimPropertyToLiterals(node);
|
||||
|
||||
@@ -26,9 +26,9 @@ class UnicodeArrayDecodeNode extends Node_1.Node {
|
||||
}
|
||||
getNodeStructure() {
|
||||
const environmentName = Utils_1.Utils.getRandomVariableName(), indexVariableName = Utils_1.Utils.getRandomVariableName(), tempArrayName = Utils_1.Utils.getRandomVariableName();
|
||||
let node, selfDefendingCode = '';
|
||||
let code = '', node;
|
||||
if (this.options['selfDefending']) {
|
||||
selfDefendingCode = `
|
||||
code = `
|
||||
var ${environmentName} = function(){return ${Utils_1.Utils.stringToUnicode('dev')};};
|
||||
|
||||
if (
|
||||
@@ -67,7 +67,7 @@ class UnicodeArrayDecodeNode extends Node_1.Node {
|
||||
var ${tempArrayName} = [];
|
||||
|
||||
for (var ${indexVariableName} in ${this.unicodeArrayName}) {
|
||||
${selfDefendingCode}
|
||||
${code}
|
||||
|
||||
${tempArrayName}[${Utils_1.Utils.stringToUnicode('push')}](decodeURI(atob(${this.unicodeArrayName}[${indexVariableName}])));
|
||||
}
|
||||
|
||||
@@ -84,31 +84,33 @@ export class UnicodeArrayCallsWrapper extends Node {
|
||||
* @returns {INode}
|
||||
*/
|
||||
protected getNodeStructure (): INode {
|
||||
let environmentName: string = Utils.getRandomVariableName(),
|
||||
let code: string = '',
|
||||
environmentName: string = Utils.getRandomVariableName(),
|
||||
keyName: string = Utils.getRandomVariableName(),
|
||||
selfDefendingCode: string = '',
|
||||
node: INode;
|
||||
|
||||
if (this.options['selfDefending']) {
|
||||
selfDefendingCode = `
|
||||
code = `
|
||||
var ${environmentName} = function(){return ${Utils.stringToUnicode('production')};};
|
||||
|
||||
if (
|
||||
${keyName} % ${Utils.getRandomInteger(this.unicodeArray.length / 8, this.unicodeArray.length / 2)} === 0 &&
|
||||
/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/.test(
|
||||
${environmentName}[${Utils.stringToUnicode('toString')}]()
|
||||
) !== true && ${keyName}++
|
||||
) === true || ${keyName}++
|
||||
) {
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)]
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)];
|
||||
}
|
||||
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)];
|
||||
`;
|
||||
} else {
|
||||
code = `return ${this.unicodeArrayName}[parseInt(${keyName}, 16)]`;
|
||||
}
|
||||
|
||||
node = esprima.parse(`
|
||||
var ${this.unicodeArrayCallsWrapperName} = function (${keyName}) {
|
||||
${selfDefendingCode}
|
||||
|
||||
return ${this.unicodeArrayName}[parseInt(${keyName}, 16)]
|
||||
${code}
|
||||
};
|
||||
`);
|
||||
|
||||
|
||||
@@ -76,11 +76,11 @@ export class UnicodeArrayDecodeNode extends Node {
|
||||
indexVariableName: string = Utils.getRandomVariableName(),
|
||||
tempArrayName: string = Utils.getRandomVariableName();
|
||||
|
||||
let node: INode,
|
||||
selfDefendingCode: string = '';
|
||||
let code: string = '',
|
||||
node: INode;
|
||||
|
||||
if (this.options['selfDefending']) {
|
||||
selfDefendingCode = `
|
||||
code = `
|
||||
var ${environmentName} = function(){return ${Utils.stringToUnicode('dev')};};
|
||||
|
||||
if (
|
||||
@@ -120,7 +120,7 @@ export class UnicodeArrayDecodeNode extends Node {
|
||||
var ${tempArrayName} = [];
|
||||
|
||||
for (var ${indexVariableName} in ${this.unicodeArrayName}) {
|
||||
${selfDefendingCode}
|
||||
${code}
|
||||
|
||||
${tempArrayName}[${Utils.stringToUnicode('push')}](decodeURI(atob(${this.unicodeArrayName}[${indexVariableName}])));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user