diff --git a/dist/index.js b/dist/index.js index f29082d7..9cd2773b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2068,7 +2068,7 @@ var AppendState_1 = __webpack_require__(2); var NoCustomNodesPreset_1 = __webpack_require__(16); var AtobTemplate_1 = __webpack_require__(57); var SelfDefendingTemplate_1 = __webpack_require__(65); -var UnicodeArrayDecodeTemplate_1 = __webpack_require__(66); +var UnicodeArrayDecodeNodeTemplate_1 = __webpack_require__(66); var AbstractCustomNode_1 = __webpack_require__(4); var JavaScriptObfuscator_1 = __webpack_require__(9); var NodeUtils_1 = __webpack_require__(1); @@ -2113,7 +2113,7 @@ var UnicodeArrayDecodeNode = function (_AbstractCustomNode_) { } else { code = forLoopFunctionName + "();"; } - return NodeUtils_1.NodeUtils.convertCodeToStructure(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(UnicodeArrayDecodeTemplate_1.UnicodeArrayDecodeTemplate().formatUnicorn({ + return NodeUtils_1.NodeUtils.convertCodeToStructure(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(UnicodeArrayDecodeNodeTemplate_1.UnicodeArrayDecodeNodeTemplate().formatUnicorn({ atobPolyfill: AtobTemplate_1.AtobTemplate(), code: code, forLoopFunctionName: forLoopFunctionName, @@ -3587,10 +3587,10 @@ exports.SelfDefendingTemplate = SelfDefendingTemplate; "use strict"; "use strict"; -function UnicodeArrayDecodeTemplate() { +function UnicodeArrayDecodeNodeTemplate() { return "\n (function () {\n {atobPolyfill}\n \n var {forLoopFunctionName} = function () {\n var array = [];\n \n for (var i in {unicodeArrayName}) {\n array['push'](decodeURI(atob({unicodeArrayName}[i])));\n }\n \n {unicodeArrayName} = array;\n };\n \n {code}\n })();\n "; } -exports.UnicodeArrayDecodeTemplate = UnicodeArrayDecodeTemplate; +exports.UnicodeArrayDecodeNodeTemplate = UnicodeArrayDecodeNodeTemplate; /***/ }, /* 67 */ diff --git a/package.json b/package.json index 23cc3680..31ecf8b0 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": { "babel-polyfill": "^6.13.0", "chance": "^1.0.4", - "class-validator": "next", + "class-validator": "^0.6.0", "commander": "^2.9.0", "escodegen": "^1.8.1", "esprima": "^3.0.0", @@ -47,18 +47,18 @@ "@types/sinon": "^1.16.29", "babel-cli": "^6.14.0", "babel-loader": "^6.2.5", - "babel-preset-es2015": "^6.13.2", + "babel-preset-es2015": "^6.14.0", "chai": "^3.5.0", - "coveralls": "^2.11.12", + "coveralls": "^2.11.14", "istanbul": "1.1.0-alpha.1", "mocha": "^3.0.2", - "sinon": "^2.0.0-pre.2", + "sinon": "^2.0.0-pre.3", "ts-loader": "^0.8.2", "ts-node": "^1.3.0", "tslint": "^3.15.1", "typescript": "^2.0.0", "webpack": "^2.1.0-beta.22", - "webpack-node-externals": "^1.3.3" + "webpack-node-externals": "^1.4.3" }, "repository": { "type": "git", diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts index c38e81b4..fb76d1cb 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts @@ -12,7 +12,7 @@ import { NO_CUSTOM_NODES_PRESET } from "../../preset-options/NoCustomNodesPreset import { AtobTemplate } from "../../templates/custom-nodes/AtobTemplate"; import { SelfDefendingTemplate } from "../../templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/SelfDefendingTemplate"; -import { UnicodeArrayDecodeTemplate } from "../../templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeTemplate"; +import { UnicodeArrayDecodeNodeTemplate } from "../../templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeNodeTemplate"; import { AbstractCustomNode } from '../AbstractCustomNode'; import { JavaScriptObfuscator } from '../../JavaScriptObfuscator'; @@ -88,7 +88,7 @@ export class UnicodeArrayDecodeNode extends AbstractCustomNode { return NodeUtils.convertCodeToStructure( JavaScriptObfuscator.obfuscate( - UnicodeArrayDecodeTemplate().formatUnicorn({ + UnicodeArrayDecodeNodeTemplate().formatUnicorn({ atobPolyfill: AtobTemplate(), code, forLoopFunctionName, diff --git a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeTemplate.ts b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeNodeTemplate.ts similarity index 88% rename from src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeTemplate.ts rename to src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeNodeTemplate.ts index 7c1872a1..cc10a3e3 100644 --- a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeTemplate.ts +++ b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeNodeTemplate.ts @@ -1,7 +1,7 @@ /** * @returns {string} */ -export function UnicodeArrayDecodeTemplate (): string { +export function UnicodeArrayDecodeNodeTemplate (): string { return ` (function () { {atobPolyfill} diff --git a/test/functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNode.spec.ts b/test/functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec.ts similarity index 100% rename from test/functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNode.spec.ts rename to test/functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec.ts diff --git a/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNodeTemplate.spec.ts b/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNodeTemplate.spec.ts new file mode 100644 index 00000000..541eb3a0 --- /dev/null +++ b/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNodeTemplate.spec.ts @@ -0,0 +1,41 @@ +import 'format-unicorn'; + +import { AtobTemplate } from "../../../../../src/templates/custom-nodes/AtobTemplate"; +import { UnicodeArrayDecodeNodeTemplate } from "../../../../../src/templates/custom-nodes/unicode-array-nodes/unicode-array-decode-node/UnicodeArrayDecodeNodeTemplate"; + +import { Utils } from "../../../../../src/Utils"; + +const assert: Chai.AssertStatic = require('chai').assert; + +/** + * @param templateData + * @param unicodeArrayName + * @returns {Function} + */ +function getFunctionFromTemplate (templateData: any, unicodeArrayName: string) { + let domainLockTemplate: string = UnicodeArrayDecodeNodeTemplate().formatUnicorn(templateData); + + return Function(` + var ${unicodeArrayName} = ['${Utils.btoa('test1')}', '${Utils.btoa('test2')}']; + + ${domainLockTemplate} + + return ${unicodeArrayName}; + `)(); +} + +describe('UnicodeArrayDecodeNodeTemplate (): string', () => { + let forLoopFunctionName: string = 'forLoop', + code: string = `${forLoopFunctionName}();`, + unicodeArrayName: string = 'unicodeArray'; + + it('should correctly decode unicode array items from Base64', () => { + assert.deepEqual(getFunctionFromTemplate({ + atobPolyfill: AtobTemplate(), + code, + forLoopFunctionName, + unicodeArrayName: unicodeArrayName + }, unicodeArrayName), ['test1', 'test2']); + }); + +}); diff --git a/test/index.spec.ts b/test/index.spec.ts index cbdf2166..f81b4eb3 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -34,4 +34,5 @@ import './functional-tests/node-obfuscators/MemberExpressionObfuscator.spec'; import './functional-tests/node-obfuscators/MethodDefinitionObfuscator.spec'; import './functional-tests/node-obfuscators/ObjectExpressionObfuscator.spec'; import './functional-tests/node-obfuscators/VariableDeclarationObfuscator.spec'; -import './functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNode.spec'; +import './functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec'; +import './functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNodeTemplate.spec';