selfDefending test implementation

This commit is contained in:
sanex3339
2016-06-04 15:22:12 +03:00
parent c8568a11de
commit 9f439072ca
4 changed files with 27 additions and 22 deletions
@@ -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}])));
}