diff --git a/dist/index.js b/dist/index.js index 865331bc..3f3f7f99 100644 --- a/dist/index.js +++ b/dist/index.js @@ -88,7 +88,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 82); +/******/ return __webpack_require__(__webpack_require__.s = 81); /******/ }) /************************************************************************/ /******/ ([ @@ -102,7 +102,7 @@ var _createClass = (function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var chance_1 = __webpack_require__(76); +var chance_1 = __webpack_require__(75); var JSFuck_1 = __webpack_require__(19); var Utils = function () { @@ -259,7 +259,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var escodegen = __webpack_require__(11); var esprima = __webpack_require__(22); var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var Nodes_1 = __webpack_require__(2); var Utils_1 = __webpack_require__(0); @@ -425,7 +425,7 @@ var _createClass = (function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var Nodes = function () { function Nodes() { @@ -555,41 +555,6 @@ var AppendState = exports.AppendState; /***/ }, /* 5 */ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var AbstractCustomNode = function () { - function AbstractCustomNode(options) { - _classCallCheck(this, AbstractCustomNode); - - this.options = options; - } - - _createClass(AbstractCustomNode, [{ - key: "getAppendState", - value: function getAppendState() { - return this.appendState; - } - }, { - key: "getNode", - value: function getNode() { - return this.getNodeStructure(); - } - }]); - - return AbstractCustomNode; -}(); - -exports.AbstractCustomNode = AbstractCustomNode; - -/***/ }, -/* 6 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -626,6 +591,41 @@ exports.NodeType = Utils_1.Utils.strEnumify({ WhileStatement: 'WhileStatement' }); +/***/ }, +/* 6 */ +/***/ function(module, exports) { + +"use strict"; +"use strict"; + +var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var AbstractCustomNode = function () { + function AbstractCustomNode(options) { + _classCallCheck(this, AbstractCustomNode); + + this.options = options; + } + + _createClass(AbstractCustomNode, [{ + key: "getAppendState", + value: function getAppendState() { + return this.appendState; + } + }, { + key: "getNode", + value: function getNode() { + return this.getNodeStructure(); + } + }]); + + return AbstractCustomNode; +}(); + +exports.AbstractCustomNode = AbstractCustomNode; + /***/ }, /* 7 */ /***/ function(module, exports) { @@ -1187,7 +1187,7 @@ var esprima = __webpack_require__(22); var escodegen = __webpack_require__(11); var ObfuscationResult_1 = __webpack_require__(18); var Obfuscator_1 = __webpack_require__(26); -var Options_1 = __webpack_require__(55); +var Options_1 = __webpack_require__(54); var SourceMapCorrector_1 = __webpack_require__(27); var JavaScriptObfuscatorInternal = function () { @@ -1255,23 +1255,23 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons var estraverse = __webpack_require__(3); var AppendState_1 = __webpack_require__(4); -var NodeType_1 = __webpack_require__(6); -var CatchClauseObfuscator_1 = __webpack_require__(46); -var ConsoleOutputNodesGroup_1 = __webpack_require__(41); -var DebugProtectionNodesGroup_1 = __webpack_require__(42); -var DomainLockNodesGroup_1 = __webpack_require__(43); -var FunctionDeclarationObfuscator_1 = __webpack_require__(47); -var FunctionObfuscator_1 = __webpack_require__(48); -var LiteralObfuscator_1 = __webpack_require__(49); -var MemberExpressionObfuscator_1 = __webpack_require__(50); -var MethodDefinitionObfuscator_1 = __webpack_require__(51); +var NodeType_1 = __webpack_require__(5); +var CatchClauseObfuscator_1 = __webpack_require__(45); +var ConsoleOutputNodesGroup_1 = __webpack_require__(40); +var DebugProtectionNodesGroup_1 = __webpack_require__(41); +var DomainLockNodesGroup_1 = __webpack_require__(42); +var FunctionDeclarationObfuscator_1 = __webpack_require__(46); +var FunctionObfuscator_1 = __webpack_require__(47); +var LiteralObfuscator_1 = __webpack_require__(48); +var MemberExpressionObfuscator_1 = __webpack_require__(49); +var MethodDefinitionObfuscator_1 = __webpack_require__(50); var Nodes_1 = __webpack_require__(2); var NodeUtils_1 = __webpack_require__(1); -var ObjectExpressionObfuscator_1 = __webpack_require__(52); -var SelfDefendingNodesGroup_1 = __webpack_require__(44); -var UnicodeArrayNodesGroup_1 = __webpack_require__(45); -var VariableDeclarationObfuscator_1 = __webpack_require__(53); -var StackTraceAnalyzer_1 = __webpack_require__(58); +var ObjectExpressionObfuscator_1 = __webpack_require__(51); +var SelfDefendingNodesGroup_1 = __webpack_require__(43); +var UnicodeArrayNodesGroup_1 = __webpack_require__(44); +var VariableDeclarationObfuscator_1 = __webpack_require__(52); +var StackTraceAnalyzer_1 = __webpack_require__(57); var Obfuscator = function () { function Obfuscator(options) { @@ -1470,8 +1470,8 @@ var _createClass = (function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var fs = __webpack_require__(79); -var mkdirp = __webpack_require__(80); +var fs = __webpack_require__(78); +var mkdirp = __webpack_require__(79); var path = __webpack_require__(23); var Utils_1 = __webpack_require__(0); @@ -1562,7 +1562,7 @@ var _createClass = (function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -var commander = __webpack_require__(78); +var commander = __webpack_require__(77); var path = __webpack_require__(23); var SourceMapMode_1 = __webpack_require__(12); var DefaultPreset_1 = __webpack_require__(21); @@ -1700,8 +1700,8 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var AppendState_1 = __webpack_require__(4); -var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(63); -var AbstractCustomNode_1 = __webpack_require__(5); +var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(62); +var AbstractCustomNode_1 = __webpack_require__(6); var CustomNodeAppender_1 = __webpack_require__(15); var NodeUtils_1 = __webpack_require__(1); @@ -1751,8 +1751,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); -var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(64); -var AbstractCustomNode_1 = __webpack_require__(5); +var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(63); +var AbstractCustomNode_1 = __webpack_require__(6); var NodeUtils_1 = __webpack_require__(1); var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { @@ -1804,8 +1804,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); -var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(65); -var AbstractCustomNode_1 = __webpack_require__(5); +var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(64); +var AbstractCustomNode_1 = __webpack_require__(6); var NodeUtils_1 = __webpack_require__(1); var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { @@ -1857,8 +1857,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); -var DebugProtectionFunctionTemplate_1 = __webpack_require__(66); -var AbstractCustomNode_1 = __webpack_require__(5); +var DebugProtectionFunctionTemplate_1 = __webpack_require__(65); +var AbstractCustomNode_1 = __webpack_require__(6); var NodeUtils_1 = __webpack_require__(1); var Utils_1 = __webpack_require__(0); @@ -1923,8 +1923,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); -var DomainLockNodeTemplate_1 = __webpack_require__(67); -var AbstractCustomNode_1 = __webpack_require__(5); +var DomainLockNodeTemplate_1 = __webpack_require__(66); +var AbstractCustomNode_1 = __webpack_require__(6); var CustomNodeAppender_1 = __webpack_require__(15); var NodeUtils_1 = __webpack_require__(1); var Utils_1 = __webpack_require__(0); @@ -1986,8 +1986,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var AppendState_1 = __webpack_require__(4); var NoCustomNodesPreset_1 = __webpack_require__(17); -var SelfDefendingTemplate_1 = __webpack_require__(68); -var AbstractCustomNode_1 = __webpack_require__(5); +var SelfDefendingTemplate_1 = __webpack_require__(67); +var AbstractCustomNode_1 = __webpack_require__(6); var JavaScriptObfuscator_1 = __webpack_require__(9); var NodeUtils_1 = __webpack_require__(1); var CustomNodeAppender_1 = __webpack_require__(15); @@ -2041,13 +2041,13 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); var NoCustomNodesPreset_1 = __webpack_require__(17); -var AtobTemplate_1 = __webpack_require__(62); -var SelfDefendingTemplate_1 = __webpack_require__(83); -var UnicodeArrayCallsWrapperTemplate_1 = __webpack_require__(69); -var AbstractCustomNode_1 = __webpack_require__(5); +var AtobTemplate_1 = __webpack_require__(61); +var SelfDefendingTemplate_1 = __webpack_require__(68); +var UnicodeArrayAtobDecodeNodeTemplate_1 = __webpack_require__(69); +var UnicodeArrayCallsWrapperTemplate_1 = __webpack_require__(70); +var AbstractCustomNode_1 = __webpack_require__(6); var JavaScriptObfuscator_1 = __webpack_require__(9); var NodeUtils_1 = __webpack_require__(1); -var UnicodeArrayAtobDecodeNodeTemplate_1 = __webpack_require__(84); var UnicodeArrayCallsWrapper = function (_AbstractCustomNode_) { _inherits(UnicodeArrayCallsWrapper, _AbstractCustomNode_); @@ -2085,21 +2085,22 @@ var UnicodeArrayCallsWrapper = function (_AbstractCustomNode_) { }, { key: 'getDecodeUnicodeArrayTemplate', value: function getDecodeUnicodeArrayTemplate() { - var forLoopFunctionName = 'forLoopFunc'; + var decodeFunctionName = 'decodeFunction'; var code = void 0; if (this.options.selfDefending) { code = SelfDefendingTemplate_1.SelfDefendingTemplate().formatUnicorn({ - forLoopFunctionName: forLoopFunctionName, + decodeFunctionName: decodeFunctionName, + unicodeArrayCallsWrapperName: this.unicodeArrayCallsWrapperName, unicodeArrayName: this.unicodeArrayName }); } else { - code = forLoopFunctionName + '();'; + code = 'value = ' + decodeFunctionName + '(decodedValues, index, value);'; } return UnicodeArrayAtobDecodeNodeTemplate_1.UnicodeArrayAtobDecodeNodeTemplate().formatUnicorn({ atobPolyfill: AtobTemplate_1.AtobTemplate(), code: code, - forLoopFunctionName: forLoopFunctionName, - unicodeArrayName: this.unicodeArrayName + decodeFunctionName: decodeFunctionName, + unicodeArrayCallsWrapperName: this.unicodeArrayCallsWrapperName }); } }, { @@ -2120,8 +2121,7 @@ var UnicodeArrayCallsWrapper = function (_AbstractCustomNode_) { exports.UnicodeArrayCallsWrapper = UnicodeArrayCallsWrapper; /***/ }, -/* 38 */, -/* 39 */ +/* 38 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2139,8 +2139,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); -var UnicodeArrayTemplate_1 = __webpack_require__(72); -var AbstractCustomNode_1 = __webpack_require__(5); +var UnicodeArrayTemplate_1 = __webpack_require__(71); +var AbstractCustomNode_1 = __webpack_require__(6); var NodeUtils_1 = __webpack_require__(1); var UnicodeArrayNode = function (_AbstractCustomNode_) { @@ -2207,7 +2207,7 @@ UnicodeArrayNode.UNICODE_ARRAY_RANDOM_LENGTH = 4; exports.UnicodeArrayNode = UnicodeArrayNode; /***/ }, -/* 40 */ +/* 39 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2226,9 +2226,9 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" __webpack_require__(8); var AppendState_1 = __webpack_require__(4); var NoCustomNodesPreset_1 = __webpack_require__(17); -var SelfDefendingTemplate_1 = __webpack_require__(73); -var UnicodeArrayRotateFunctionTemplate_1 = __webpack_require__(74); -var AbstractCustomNode_1 = __webpack_require__(5); +var SelfDefendingTemplate_1 = __webpack_require__(72); +var UnicodeArrayRotateFunctionTemplate_1 = __webpack_require__(73); +var AbstractCustomNode_1 = __webpack_require__(6); var JavaScriptObfuscator_1 = __webpack_require__(9); var NodeUtils_1 = __webpack_require__(1); var Utils_1 = __webpack_require__(0); @@ -2291,7 +2291,7 @@ var UnicodeArrayRotateFunctionNode = function (_AbstractCustomNode_) { exports.UnicodeArrayRotateFunctionNode = UnicodeArrayRotateFunctionNode; /***/ }, -/* 41 */ +/* 40 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2327,7 +2327,7 @@ var ConsoleOutputNodesGroup = function (_AbstractNodesGroup_) { exports.ConsoleOutputNodesGroup = ConsoleOutputNodesGroup; /***/ }, -/* 42 */ +/* 41 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2371,7 +2371,7 @@ var DebugProtectionNodesGroup = function (_AbstractNodesGroup_) { exports.DebugProtectionNodesGroup = DebugProtectionNodesGroup; /***/ }, -/* 43 */ +/* 42 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2407,7 +2407,7 @@ var DomainLockNodesGroup = function (_AbstractNodesGroup_) { exports.DomainLockNodesGroup = DomainLockNodesGroup; /***/ }, -/* 44 */ +/* 43 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2443,7 +2443,7 @@ var SelfDefendingNodesGroup = function (_AbstractNodesGroup_) { exports.SelfDefendingNodesGroup = SelfDefendingNodesGroup; /***/ }, -/* 45 */ +/* 44 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2458,8 +2458,8 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var AbstractNodesGroup_1 = __webpack_require__(10); var UnicodeArray_1 = __webpack_require__(28); var UnicodeArrayCallsWrapper_1 = __webpack_require__(37); -var UnicodeArrayNode_1 = __webpack_require__(39); -var UnicodeArrayRotateFunctionNode_1 = __webpack_require__(40); +var UnicodeArrayNode_1 = __webpack_require__(38); +var UnicodeArrayRotateFunctionNode_1 = __webpack_require__(39); var Utils_1 = __webpack_require__(0); var UnicodeArrayNodesGroup = function (_AbstractNodesGroup_) { @@ -2499,7 +2499,7 @@ var UnicodeArrayNodesGroup = function (_AbstractNodesGroup_) { exports.UnicodeArrayNodesGroup = UnicodeArrayNodesGroup; /***/ }, -/* 46 */ +/* 45 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2514,7 +2514,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var AbstractNodeObfuscator_1 = __webpack_require__(7); var IdentifierReplacer_1 = __webpack_require__(14); var Nodes_1 = __webpack_require__(2); @@ -2570,7 +2570,7 @@ var CatchClauseObfuscator = function (_AbstractNodeObfuscat) { exports.CatchClauseObfuscator = CatchClauseObfuscator; /***/ }, -/* 47 */ +/* 46 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2585,7 +2585,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var AbstractNodeObfuscator_1 = __webpack_require__(7); var IdentifierReplacer_1 = __webpack_require__(14); var Nodes_1 = __webpack_require__(2); @@ -2645,7 +2645,7 @@ var FunctionDeclarationObfuscator = function (_AbstractNodeObfuscat) { exports.FunctionDeclarationObfuscator = FunctionDeclarationObfuscator; /***/ }, -/* 48 */ +/* 47 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2660,7 +2660,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var AbstractNodeObfuscator_1 = __webpack_require__(7); var IdentifierReplacer_1 = __webpack_require__(14); var Nodes_1 = __webpack_require__(2); @@ -2726,7 +2726,7 @@ var FunctionObfuscator = function (_AbstractNodeObfuscat) { exports.FunctionObfuscator = FunctionObfuscator; /***/ }, -/* 49 */ +/* 48 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2744,7 +2744,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var escodegen = __webpack_require__(11); var AbstractNodeObfuscator_1 = __webpack_require__(7); -var BooleanLiteralReplacer_1 = __webpack_require__(54); +var BooleanLiteralReplacer_1 = __webpack_require__(53); var Nodes_1 = __webpack_require__(2); var NumberLiteralReplacer_1 = __webpack_require__(20); var StringLiteralReplacer_1 = __webpack_require__(16); @@ -2791,7 +2791,7 @@ var LiteralObfuscator = function (_AbstractNodeObfuscat) { exports.LiteralObfuscator = LiteralObfuscator; /***/ }, -/* 50 */ +/* 49 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2807,7 +2807,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var escodegen = __webpack_require__(11); var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var AbstractNodeObfuscator_1 = __webpack_require__(7); var Nodes_1 = __webpack_require__(2); var StringLiteralReplacer_1 = __webpack_require__(16); @@ -2876,7 +2876,7 @@ var MemberExpressionObfuscator = function (_AbstractNodeObfuscat) { exports.MemberExpressionObfuscator = MemberExpressionObfuscator; /***/ }, -/* 51 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2937,7 +2937,7 @@ var MethodDefinitionObfuscator = function (_AbstractNodeObfuscat) { exports.MethodDefinitionObfuscator = MethodDefinitionObfuscator; /***/ }, -/* 52 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2953,7 +2953,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" var escodegen = __webpack_require__(11); var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var AbstractNodeObfuscator_1 = __webpack_require__(7); var Nodes_1 = __webpack_require__(2); var Utils_1 = __webpack_require__(0); @@ -3023,7 +3023,7 @@ var ObjectExpressionObfuscator = function (_AbstractNodeObfuscat) { exports.ObjectExpressionObfuscator = ObjectExpressionObfuscator; /***/ }, -/* 53 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3038,7 +3038,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); +var NodeType_1 = __webpack_require__(5); var AbstractNodeObfuscator_1 = __webpack_require__(7); var IdentifierReplacer_1 = __webpack_require__(14); var Nodes_1 = __webpack_require__(2); @@ -3100,7 +3100,7 @@ var VariableDeclarationObfuscator = function (_AbstractNodeObfuscat) { exports.VariableDeclarationObfuscator = VariableDeclarationObfuscator; /***/ }, -/* 54 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3139,7 +3139,7 @@ var BooleanLiteralReplacer = function (_AbstractReplacer_1$A) { exports.BooleanLiteralReplacer = BooleanLiteralReplacer; /***/ }, -/* 55 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3160,11 +3160,11 @@ var __decorate = undefined && undefined.__decorate || function (decorators, targ var __metadata = undefined && undefined.__metadata || function (k, v) { if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; -var class_validator_1 = __webpack_require__(77); -var TSourceMapMode_1 = __webpack_require__(75); +var class_validator_1 = __webpack_require__(76); +var TSourceMapMode_1 = __webpack_require__(74); var DefaultPreset_1 = __webpack_require__(21); -var OptionsNormalizer_1 = __webpack_require__(56); -var ValidationErrorsFormatter_1 = __webpack_require__(57); +var OptionsNormalizer_1 = __webpack_require__(55); +var ValidationErrorsFormatter_1 = __webpack_require__(56); var Options = function Options(obfuscatorOptions) { _classCallCheck(this, Options); @@ -3210,7 +3210,7 @@ exports.Options = Options; var _a; /***/ }, -/* 56 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3379,7 +3379,7 @@ OptionsNormalizer.normalizerRules = [OptionsNormalizer.domainLockRule, OptionsNo exports.OptionsNormalizer = OptionsNormalizer; /***/ }, -/* 57 */ +/* 56 */ /***/ function(module, exports) { "use strict"; @@ -3446,7 +3446,7 @@ var ValidationErrorsFormatter = function () { exports.ValidationErrorsFormatter = ValidationErrorsFormatter; /***/ }, -/* 58 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3457,10 +3457,10 @@ var _createClass = (function () { function defineProperties(target, props) { for function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var estraverse = __webpack_require__(3); -var NodeType_1 = __webpack_require__(6); -var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(59); -var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(60); -var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(61); +var NodeType_1 = __webpack_require__(5); +var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(58); +var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(59); +var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(60); var Nodes_1 = __webpack_require__(2); var NodeUtils_1 = __webpack_require__(1); @@ -3537,7 +3537,7 @@ var StackTraceAnalyzer = function () { exports.StackTraceAnalyzer = StackTraceAnalyzer; /***/ }, -/* 59 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3596,7 +3596,7 @@ var FunctionDeclarationCalleeDataExtractor = function () { exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor; /***/ }, -/* 60 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3658,7 +3658,7 @@ var FunctionExpressionCalleeDataExtractor = function () { exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor; /***/ }, -/* 61 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3789,7 +3789,7 @@ var ObjectExpressionCalleeDataExtractor = function () { exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor; /***/ }, -/* 62 */ +/* 61 */ /***/ function(module, exports) { "use strict"; @@ -3801,7 +3801,7 @@ function AtobTemplate() { exports.AtobTemplate = AtobTemplate; /***/ }, -/* 63 */ +/* 62 */ /***/ function(module, exports) { "use strict"; @@ -3813,7 +3813,7 @@ function ConsoleOutputDisableExpressionTemplate() { exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate; /***/ }, -/* 64 */ +/* 63 */ /***/ function(module, exports) { "use strict"; @@ -3825,7 +3825,7 @@ function DebugProtectionFunctionCallTemplate() { exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate; /***/ }, -/* 65 */ +/* 64 */ /***/ function(module, exports) { "use strict"; @@ -3837,7 +3837,7 @@ function DebugProtectionFunctionIntervalTemplate() { exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate; /***/ }, -/* 66 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3850,7 +3850,7 @@ function DebugProtectionFunctionTemplate() { exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate; /***/ }, -/* 67 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3863,7 +3863,7 @@ function DomainLockNodeTemplate() { exports.DomainLockNodeTemplate = DomainLockNodeTemplate; /***/ }, -/* 68 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3875,6 +3875,19 @@ function SelfDefendingTemplate() { } exports.SelfDefendingTemplate = SelfDefendingTemplate; +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; +"use strict"; + +var Utils_1 = __webpack_require__(0); +function SelfDefendingTemplate() { + return '\n var func = function(){return \'dev\';};\n \n !{unicodeArrayCallsWrapperName}.flag ? ({unicodeArrayCallsWrapperName}.flag = true, Function(' + Utils_1.Utils.stringToUnicode('return/\\w+ *\\(\\) *{\\w+ *[\'|"].+[\'|"];? *}/') + ')()[\'test\'](func[\'toString\']()) !== true && !{unicodeArrayName}++ ? [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(true){}\')() : (value = Function(\'a\', \'b\', \'c\', \'d\', \'return a.call(null, b, c, d)\')({decodeFunctionName}, decodedValues, index, value)) ? [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(false){}\')() : [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(false){}\')()) : (value = Function(\'a\', \'b\', \'c\', \'d\', \'return a.call(null, b, c, d)\')({decodeFunctionName}, decodedValues, index, value));\n '; +} +exports.SelfDefendingTemplate = SelfDefendingTemplate; + /***/ }, /* 69 */ /***/ function(module, exports) { @@ -3882,15 +3895,25 @@ exports.SelfDefendingTemplate = SelfDefendingTemplate; "use strict"; "use strict"; +function UnicodeArrayAtobDecodeNodeTemplate() { + return " \n {atobPolyfill}\n \n var decodedValues = {unicodeArrayCallsWrapperName}.data || {};\n \n var {decodeFunctionName} = function (decodedValues, index, value) {\n if (!decodedValues[index]) {\n value = decodeURI(atob(value));\n decodedValues[index] = value;\n } else {\n value = decodedValues[index];\n } \n \n {unicodeArrayCallsWrapperName}.data = decodedValues;\n \n return value;\n }\n \n {code}\n "; +} +exports.UnicodeArrayAtobDecodeNodeTemplate = UnicodeArrayAtobDecodeNodeTemplate; + +/***/ }, +/* 70 */ +/***/ function(module, exports) { + +"use strict"; +"use strict"; + function UnicodeArrayCallsWrapperTemplate() { - return "\n var {unicodeArrayCallsWrapperName} = function (index, key) {\n var value = {unicodeArrayName}[parseInt(index, 0x010)]\n \n {decodeNodeTemplate}\n \n return value;\n };\n "; + return "\n var {unicodeArrayCallsWrapperName} = function (index, key) {\n var index = parseInt(index, 0x010);\n var value = {unicodeArrayName}[index];\n \n {decodeNodeTemplate}\n \n return value;\n };\n "; } exports.UnicodeArrayCallsWrapperTemplate = UnicodeArrayCallsWrapperTemplate; /***/ }, -/* 70 */, -/* 71 */, -/* 72 */ +/* 71 */ /***/ function(module, exports) { "use strict"; @@ -3902,7 +3925,7 @@ function UnicodeArrayTemplate() { exports.UnicodeArrayTemplate = UnicodeArrayTemplate; /***/ }, -/* 73 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3915,7 +3938,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 74 */ +/* 73 */ /***/ function(module, exports) { "use strict"; @@ -3927,45 +3950,45 @@ function UnicodeArrayRotateFunctionTemplate() { exports.UnicodeArrayRotateFunctionTemplate = UnicodeArrayRotateFunctionTemplate; /***/ }, -/* 75 */ +/* 74 */ /***/ function(module, exports) { "use strict"; "use strict"; /***/ }, -/* 76 */ +/* 75 */ /***/ function(module, exports) { module.exports = require("chance"); /***/ }, -/* 77 */ +/* 76 */ /***/ function(module, exports) { module.exports = require("class-validator"); /***/ }, -/* 78 */ +/* 77 */ /***/ function(module, exports) { module.exports = require("commander"); /***/ }, -/* 79 */ +/* 78 */ /***/ function(module, exports) { module.exports = require("fs"); /***/ }, -/* 80 */ +/* 79 */ /***/ function(module, exports) { module.exports = require("mkdirp"); /***/ }, -/* 81 */, -/* 82 */ +/* 80 */, +/* 81 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3977,31 +4000,6 @@ if (!global._babelPolyfill) { } module.exports = JavaScriptObfuscator_1.JavaScriptObfuscator; -/***/ }, -/* 83 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; -"use strict"; - -var Utils_1 = __webpack_require__(0); -function SelfDefendingTemplate() { - return '\n var func = function(){return \'dev\';};\n \n Function(' + Utils_1.Utils.stringToUnicode('return/\\w+ *\\(\\) *{\\w+ *[\'|"].+[\'|"];? *}/') + ')()[\'test\'](func[\'toString\']()) !== true && !{unicodeArrayName}++ ? [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(true){}\')() : Function(\'a\', atob(' + Utils_1.Utils.stringToUnicode(Utils_1.Utils.btoa('a.call()')) + '))({forLoopFunctionName}) ? [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(false){}\')() : [][\'filter\'][\'constructor\'](' + Utils_1.Utils.stringToJSFuck('while') + ' + \'(false){}\')();\n '; -} -exports.SelfDefendingTemplate = SelfDefendingTemplate; - -/***/ }, -/* 84 */ -/***/ function(module, exports) { - -"use strict"; -"use strict"; - -function UnicodeArrayAtobDecodeNodeTemplate() { - return "\n var decodedIndices = [];\n \n if (decodedIndices.indexOf(index) === -1) {\n value = atob(value);\n }\n "; -} -exports.UnicodeArrayAtobDecodeNodeTemplate = UnicodeArrayAtobDecodeNodeTemplate; - /***/ } /******/ ]); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts index e288deb3..0a9869c6 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.ts @@ -12,13 +12,13 @@ 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-calls-wrapper/SelfDefendingTemplate'; +import { UnicodeArrayAtobDecodeNodeTemplate } from '../../templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate'; import { UnicodeArrayCallsWrapperTemplate } from '../../templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate'; import { AbstractCustomNode } from '../AbstractCustomNode'; import { JavaScriptObfuscator } from '../../JavaScriptObfuscator'; import { NodeUtils } from '../../NodeUtils'; import { UnicodeArray } from '../../UnicodeArray'; -import { UnicodeArrayAtobDecodeNodeTemplate } from '../../templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate'; export class UnicodeArrayCallsWrapper extends AbstractCustomNode { /** @@ -86,27 +86,28 @@ export class UnicodeArrayCallsWrapper extends AbstractCustomNode { } /** - * @returns {any} + * @returns {string} */ protected getDecodeUnicodeArrayTemplate (): string { - const forLoopFunctionName: string = 'forLoopFunc'; + const decodeFunctionName: string = 'decodeFunction'; let code: string; if (this.options.selfDefending) { code = SelfDefendingTemplate().formatUnicorn({ - forLoopFunctionName, + decodeFunctionName, + unicodeArrayCallsWrapperName: this.unicodeArrayCallsWrapperName, unicodeArrayName: this.unicodeArrayName }); } else { - code = `${forLoopFunctionName}();`; + code = `value = ${decodeFunctionName}(decodedValues, index, value);`; } return UnicodeArrayAtobDecodeNodeTemplate().formatUnicorn({ atobPolyfill: AtobTemplate(), code, - forLoopFunctionName, - unicodeArrayName: this.unicodeArrayName + decodeFunctionName, + unicodeArrayCallsWrapperName: this.unicodeArrayCallsWrapperName }) } @@ -114,12 +115,14 @@ export class UnicodeArrayCallsWrapper extends AbstractCustomNode { * @returns {ESTree.Node} */ protected getNodeStructure (): ESTree.Node { - let decodeNodeTemplate: string = this.options.encodeUnicodeLiterals ? this.getDecodeUnicodeArrayTemplate() : ''; + const decodeNodeTemplate: string = this.options.encodeUnicodeLiterals ? + this.getDecodeUnicodeArrayTemplate() : + ''; return NodeUtils.convertCodeToStructure( JavaScriptObfuscator.obfuscate( UnicodeArrayCallsWrapperTemplate().formatUnicorn({ - decodeNodeTemplate: decodeNodeTemplate, + decodeNodeTemplate, unicodeArrayCallsWrapperName: this.unicodeArrayCallsWrapperName, unicodeArrayName: this.unicodeArrayName }), diff --git a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/SelfDefendingTemplate.ts b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/SelfDefendingTemplate.ts index b0fb4690..9fcd5f4b 100644 --- a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/SelfDefendingTemplate.ts +++ b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/SelfDefendingTemplate.ts @@ -6,7 +6,7 @@ import { Utils } from '../../../../Utils'; export function SelfDefendingTemplate (): string { return ` var func = function(){return 'dev';}; - - Function(${Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})()['test'](func['toString']()) !== true && !{unicodeArrayName}++ ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(true){}')() : Function('a', atob(${Utils.stringToUnicode(Utils.btoa('a.call()'))}))({forLoopFunctionName}) ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(false){}')() : []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(false){}')(); + + !{unicodeArrayCallsWrapperName}.flag ? ({unicodeArrayCallsWrapperName}.flag = true, Function(${Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})()['test'](func['toString']()) !== true && !{unicodeArrayName}++ ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(true){}')() : (value = Function('a', 'b', 'c', 'd', 'return a.call(null, b, c, d)')({decodeFunctionName}, decodedValues, index, value)) ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(false){}')() : []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(false){}')()) : (value = Function('a', 'b', 'c', 'd', 'return a.call(null, b, c, d)')({decodeFunctionName}, decodedValues, index, value)); `; } diff --git a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate.ts b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate.ts index 2e14184c..990232a2 100644 --- a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate.ts +++ b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate.ts @@ -2,11 +2,24 @@ * @returns {string} */ export function UnicodeArrayAtobDecodeNodeTemplate (): string { - return ` - var decodedIndices = []; - - if (decodedIndices.indexOf(index) === -1) { - value = atob(value); + return ` + {atobPolyfill} + + var decodedValues = {unicodeArrayCallsWrapperName}.data || {}; + + var {decodeFunctionName} = function (decodedValues, index, value) { + if (!decodedValues[index]) { + value = decodeURI(atob(value)); + decodedValues[index] = value; + } else { + value = decodedValues[index]; + } + + {unicodeArrayCallsWrapperName}.data = decodedValues; + + return value; } + + {code} `; } diff --git a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate.ts b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate.ts index e93a7129..4d9dd3fc 100644 --- a/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate.ts +++ b/src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate.ts @@ -4,7 +4,8 @@ export function UnicodeArrayCallsWrapperTemplate (): string { return ` var {unicodeArrayCallsWrapperName} = function (index, key) { - var value = {unicodeArrayName}[parseInt(index, 0x010)] + var index = parseInt(index, 0x010); + var value = {unicodeArrayName}[index]; {decodeNodeTemplate} diff --git a/test/functional-tests/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.spec.ts b/test/functional-tests/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.spec.ts index a4e82037..ea791e24 100644 --- a/test/functional-tests/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.spec.ts +++ b/test/functional-tests/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapper.spec.ts @@ -15,7 +15,7 @@ describe('UnicodeArrayCallsWrapper', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4}\[parseInt\(_0x([a-z0-9]){4,6}, *0x10\)\];/ + /var *_0x([a-z0-9]){4,6} *= *parseInt\(_0x([a-z0-9]){4,6}, *0x10\);/ ); }); }); diff --git a/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapperNodeTemplate.spec.ts b/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapperNodeTemplate.spec.ts new file mode 100644 index 00000000..f3cb5326 --- /dev/null +++ b/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapperNodeTemplate.spec.ts @@ -0,0 +1,54 @@ +import 'format-unicorn'; + +import { AtobTemplate } from '../../../../../src/templates/custom-nodes/AtobTemplate'; +import { UnicodeArrayAtobDecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate'; +import { UnicodeArrayCallsWrapperTemplate } from '../../../../../src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayCallsWrapperTemplate'; + +import { Utils } from '../../../../../src/Utils'; + +const assert: Chai.AssertStatic = require('chai').assert; + +/** + * @param templateData + * @param unicodeArrayName + * @param unicodeArrayCallsWrapperName + * @param index + * @returns {Function} + */ +function getFunctionFromTemplate ( + templateData: any, + unicodeArrayName: string, + unicodeArrayCallsWrapperName: string, + index: string +) { + let unicodeArrayCallsWrapperTemplate: string = UnicodeArrayCallsWrapperTemplate().formatUnicorn(templateData); + + return Function(` + var ${unicodeArrayName} = ['${Utils.btoa('test1')}']; + + ${unicodeArrayCallsWrapperTemplate} + + return ${unicodeArrayCallsWrapperName}(${index}); + `)(); +} + +describe('UnicodeArrayCallsWrapperNodeTemplate (): string', () => { + let decodeFunctionName: string = 'decodeFunction', + unicodeArrayName: string = 'unicodeArrayName', + unicodeArrayCallsWrapperName: string = 'unicodeArrayCallsWrapperName', + atobDecodeNodeTemplate: string = UnicodeArrayAtobDecodeNodeTemplate().formatUnicorn({ + atobPolyfill: AtobTemplate(), + code: `value = ${decodeFunctionName}(decodedValues, index, value);`, + decodeFunctionName, + unicodeArrayCallsWrapperName + }); + + it('should correctly returns decoded value with atob encoding', () => { + assert.deepEqual(getFunctionFromTemplate({ + decodeNodeTemplate: atobDecodeNodeTemplate, + unicodeArrayCallsWrapperName, + unicodeArrayName + }, unicodeArrayName, unicodeArrayCallsWrapperName, '0x0'), 'test1'); + }); + +}); 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 deleted file mode 100644 index 1ab92ee6..00000000 --- a/test/functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNodeTemplate.spec.ts +++ /dev/null @@ -1,41 +0,0 @@ -import 'format-unicorn'; - -import { AtobTemplate } from '../../../../../src/templates/custom-nodes/AtobTemplate'; -import { UnicodeArrayAtobDecodeNodeTemplate } from '../../../../../src/templates/custom-nodes/unicode-array-nodes/unicode-array-calls-wrapper/UnicodeArrayAtobDecodeNodeTemplate'; - -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 = UnicodeArrayAtobDecodeNodeTemplate().formatUnicorn(templateData); - - return Function(` - var ${unicodeArrayName} = ['${Utils.btoa('test1')}', '${Utils.btoa('test2')}']; - - ${domainLockTemplate} - - return ${unicodeArrayName}; - `)(); -} - -describe('UnicodeArrayAtobDecodeNodeTemplate (): 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 5108a506..b95d860e 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -37,7 +37,7 @@ import './functional-tests/node-obfuscators/ObjectExpressionObfuscator.spec'; import './functional-tests/node-obfuscators/VariableDeclarationObfuscator.spec'; import './functional-tests/stack-trace-analyzer/StackTraceAnalyzer.spec'; import './functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec'; -import './functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNodeTemplate.spec'; +import './functional-tests/templates/custom-nodes/unicode-array-nodes/UnicodeArrayCallsWrapperNodeTemplate.spec'; /** * Performance tests