From e88bec91898a13437752fd4acdefa42b5a12e2a3 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sat, 24 Dec 2016 16:02:45 +0300 Subject: [PATCH] 0.9.0-dev.5 --- dist/index.js | 802 +++++++++--------- package.json | 8 +- src/Obfuscator.ts | 20 +- .../ControlFlowStorageNode.ts | 4 +- .../node-transformers/INodeTransformer.d.ts | 3 +- .../AbstractNodeTransformer.ts | 3 +- .../FunctionControlFlowTransformer.ts | 5 +- .../node-obfuscators/CatchClauseObfuscator.ts | 5 +- .../FunctionDeclarationObfuscator.ts | 7 +- .../node-obfuscators/FunctionObfuscator.ts | 5 +- .../LabeledStatementObfuscator.ts | 5 +- .../node-obfuscators/LiteralObfuscator.ts | 9 +- .../MemberExpressionObfuscator.ts | 7 +- .../MethodDefinitionObfuscator.ts | 5 +- .../ObjectExpressionObfuscator.ts | 5 +- .../VariableDeclarationObfuscator.ts | 7 +- src/node/NodeUtils.ts | 16 +- src/utils/Utils.ts | 2 +- test/unit-tests/node/NodeAppender.spec.ts | 12 +- test/unit-tests/node/NodeUtils.spec.ts | 74 +- tslint.json | 4 +- 21 files changed, 535 insertions(+), 473 deletions(-) diff --git a/dist/index.js b/dist/index.js index a53aea59..d3cc9ba8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -182,89 +182,6 @@ module.exports = require("babel-runtime/helpers/possibleConstructorReturn"); "use strict"; -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = __webpack_require__(1); - -var _createClass3 = _interopRequireDefault(_createClass2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var chance_1 = __webpack_require__(48); -var Utils_1 = __webpack_require__(13); - -var RandomGeneratorUtils = function () { - function RandomGeneratorUtils() { - (0, _classCallCheck3.default)(this, RandomGeneratorUtils); - } - - (0, _createClass3.default)(RandomGeneratorUtils, null, [{ - key: "getRandomFloat", - value: function getRandomFloat(min, max) { - return RandomGeneratorUtils.getRandomGenerator().floating({ - min: min, - max: max, - fixed: 7 - }); - } - }, { - key: "getRandomGenerator", - value: function getRandomGenerator() { - var randomGenerator = RandomGeneratorUtils.randomGenerator; - if (!randomGenerator) { - throw new Error("`randomGenerator` static property is undefined"); - } - return RandomGeneratorUtils.randomGenerator; - } - }, { - key: "getRandomInteger", - value: function getRandomInteger(min, max) { - return RandomGeneratorUtils.getRandomGenerator().integer({ - min: min, - max: max - }); - } - }, { - key: "getRandomString", - value: function getRandomString(length) { - var pool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RandomGeneratorUtils.randomGeneratorPool; - - return RandomGeneratorUtils.getRandomGenerator().string({ length: length, pool: pool }); - } - }, { - key: "getRandomVariableName", - value: function getRandomVariableName() { - var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6; - var withPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - - var prefix = withPrefix ? "_" + Utils_1.Utils.hexadecimalPrefix : ''; - var rangeMinInteger = 10000; - var rangeMaxInteger = 99999999; - return "" + prefix + Utils_1.Utils.decToHex(RandomGeneratorUtils.getRandomInteger(rangeMinInteger, rangeMaxInteger)).substr(0, length); - } - }, { - key: "setRandomGenerator", - value: function setRandomGenerator(randomGenerator) { - RandomGeneratorUtils.randomGenerator = randomGenerator; - } - }]); - return RandomGeneratorUtils; -}(); - -RandomGeneratorUtils.randomGeneratorPool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; -RandomGeneratorUtils.randomGeneratorPoolWithNumbers = RandomGeneratorUtils.randomGeneratorPool + "0123456789"; -RandomGeneratorUtils.randomGenerator = new chance_1.Chance(); -exports.RandomGeneratorUtils = RandomGeneratorUtils; - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - var _getIterator2 = __webpack_require__(21); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -280,7 +197,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var escodegen = __webpack_require__(25); -var esprima = __webpack_require__(49); +var esprima = __webpack_require__(48); var estraverse = __webpack_require__(14); var NodeType_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); @@ -301,13 +218,14 @@ var NodeUtils = function () { }; } }); + return node; } }, { key: "convertCodeToStructure", value: function convertCodeToStructure(code) { var structure = esprima.parse(code); - NodeUtils.addXVerbatimPropertyToLiterals(structure); - NodeUtils.parentize(structure); + structure = NodeUtils.addXVerbatimPropertyToLiterals(structure); + structure = NodeUtils.parentize(structure); return structure.body; } }, { @@ -420,6 +338,7 @@ var NodeUtils = function () { node.obfuscated = false; } }); + return node; } }, { key: "typedReplace", @@ -451,6 +370,89 @@ var NodeUtils = function () { NodeUtils.nodesWithBlockScope = [NodeType_1.NodeType.ArrowFunctionExpression, NodeType_1.NodeType.FunctionDeclaration, NodeType_1.NodeType.FunctionExpression, NodeType_1.NodeType.MethodDefinition, NodeType_1.NodeType.Program]; exports.NodeUtils = NodeUtils; +/***/ }, +/* 9 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; + + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = __webpack_require__(1); + +var _createClass3 = _interopRequireDefault(_createClass2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var chance_1 = __webpack_require__(47); +var Utils_1 = __webpack_require__(13); + +var RandomGeneratorUtils = function () { + function RandomGeneratorUtils() { + (0, _classCallCheck3.default)(this, RandomGeneratorUtils); + } + + (0, _createClass3.default)(RandomGeneratorUtils, null, [{ + key: "getRandomFloat", + value: function getRandomFloat(min, max) { + return RandomGeneratorUtils.getRandomGenerator().floating({ + min: min, + max: max, + fixed: 7 + }); + } + }, { + key: "getRandomGenerator", + value: function getRandomGenerator() { + var randomGenerator = RandomGeneratorUtils.randomGenerator; + if (!randomGenerator) { + throw new Error("`randomGenerator` static property is undefined"); + } + return RandomGeneratorUtils.randomGenerator; + } + }, { + key: "getRandomInteger", + value: function getRandomInteger(min, max) { + return RandomGeneratorUtils.getRandomGenerator().integer({ + min: min, + max: max + }); + } + }, { + key: "getRandomString", + value: function getRandomString(length) { + var pool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RandomGeneratorUtils.randomGeneratorPool; + + return RandomGeneratorUtils.getRandomGenerator().string({ length: length, pool: pool }); + } + }, { + key: "getRandomVariableName", + value: function getRandomVariableName() { + var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6; + var withPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + + var prefix = withPrefix ? "_" + Utils_1.Utils.hexadecimalPrefix : ''; + var rangeMinInteger = 10000; + var rangeMaxInteger = 99999999; + return "" + prefix + Utils_1.Utils.decToHex(RandomGeneratorUtils.getRandomInteger(rangeMinInteger, rangeMaxInteger)).substr(0, length); + } + }, { + key: "setRandomGenerator", + value: function setRandomGenerator(randomGenerator) { + RandomGeneratorUtils.randomGenerator = randomGenerator; + } + }]); + return RandomGeneratorUtils; +}(); + +RandomGeneratorUtils.randomGeneratorPool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; +RandomGeneratorUtils.randomGeneratorPoolWithNumbers = RandomGeneratorUtils.randomGeneratorPool + "0123456789"; +RandomGeneratorUtils.randomGenerator = new chance_1.Chance(); +exports.RandomGeneratorUtils = RandomGeneratorUtils; + /***/ }, /* 10 */ /***/ function(module, exports, __webpack_require__) { @@ -466,7 +468,7 @@ var _getOwnPropertyDescriptor = __webpack_require__(129); var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor); -var _keys = __webpack_require__(46); +var _keys = __webpack_require__(45); var _keys2 = _interopRequireDefault(_keys); @@ -869,7 +871,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var AbstractCustomNode = function () { function AbstractCustomNode(options) { (0, _classCallCheck3.default)(this, AbstractCustomNode); @@ -958,7 +960,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var AbstractNodeTransformer = function AbstractNodeTransformer(options) { (0, _classCallCheck3.default)(this, AbstractNodeTransformer); @@ -1050,13 +1052,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de __webpack_require__(139); if (!global._babelPolyfill) { - __webpack_require__(127); + __webpack_require__(126); } var ServiceIdentifiers_1 = __webpack_require__(4); -var chance_1 = __webpack_require__(48); -var InversifyContainerFacade_1 = __webpack_require__(57); -var JavaScriptObfuscatorCLI_1 = __webpack_require__(56); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var chance_1 = __webpack_require__(47); +var InversifyContainerFacade_1 = __webpack_require__(56); +var JavaScriptObfuscatorCLI_1 = __webpack_require__(55); +var RandomGeneratorUtils_1 = __webpack_require__(9); var JavaScriptObfuscator = function () { function JavaScriptObfuscator() { @@ -1112,7 +1114,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var NodeAppender = function () { function NodeAppender() { @@ -1323,7 +1325,7 @@ exports.AbstractReplacer = AbstractReplacer; "use strict"; -var _freeze = __webpack_require__(45); +var _freeze = __webpack_require__(44); var _freeze2 = _interopRequireDefault(_freeze); @@ -1626,7 +1628,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(13); var CryptUtils = function () { @@ -1860,7 +1862,7 @@ var NodeTransformers; "use strict"; -var _freeze = __webpack_require__(45); +var _freeze = __webpack_require__(44); var _freeze2 = _interopRequireDefault(_freeze); @@ -1917,7 +1919,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var Initializable_1 = __webpack_require__(10); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(13); var MapStorage = function () { function MapStorage() { @@ -1992,46 +1994,40 @@ module.exports = require("babel-runtime/core-js/array/from"); /* 44 */ /***/ function(module, exports) { -module.exports = require("babel-runtime/core-js/object/assign"); +module.exports = require("babel-runtime/core-js/object/freeze"); /***/ }, /* 45 */ /***/ function(module, exports) { -module.exports = require("babel-runtime/core-js/object/freeze"); +module.exports = require("babel-runtime/core-js/object/keys"); /***/ }, /* 46 */ /***/ function(module, exports) { -module.exports = require("babel-runtime/core-js/object/keys"); +module.exports = require("babel-runtime/helpers/get"); /***/ }, /* 47 */ /***/ function(module, exports) { -module.exports = require("babel-runtime/helpers/get"); +module.exports = require("chance"); /***/ }, /* 48 */ /***/ function(module, exports) { -module.exports = require("chance"); +module.exports = require("esprima"); /***/ }, /* 49 */ /***/ function(module, exports) { -module.exports = require("esprima"); - -/***/ }, -/* 50 */ -/***/ function(module, exports) { - module.exports = require("path"); /***/ }, -/* 51 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2050,7 +2046,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var esprima = __webpack_require__(49); +var esprima = __webpack_require__(48); var escodegen = __webpack_require__(25); var JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal_1 = function () { function JavaScriptObfuscatorInternal(obfuscator, sourceMapCorrector, options) { @@ -2104,7 +2100,7 @@ exports.JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal; var JavaScriptObfuscatorInternal_1; /***/ }, -/* 52 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2158,7 +2154,7 @@ ObfuscationResult = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__meta exports.ObfuscationResult = ObfuscationResult; /***/ }, -/* 53 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2189,9 +2185,9 @@ var estraverse = __webpack_require__(14); var NodeTransformers_1 = __webpack_require__(40); var NodeType_1 = __webpack_require__(16); var ObfuscationEvents_1 = __webpack_require__(22); -var VisitorDirection_1 = __webpack_require__(82); +var VisitorDirection_1 = __webpack_require__(81); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var Obfuscator = Obfuscator_1 = function () { function Obfuscator(stackTraceAnalyzer, obfuscationEventEmitter, customNodeGroupStorage, nodeTransformersFactory, options) { (0, _classCallCheck3.default)(this, Obfuscator); @@ -2211,7 +2207,7 @@ var Obfuscator = Obfuscator_1 = function () { if (Node_1.Node.isProgramNode(astTree) && !astTree.body.length) { return astTree; } - NodeUtils_1.NodeUtils.parentize(astTree); + astTree = NodeUtils_1.NodeUtils.parentize(astTree); var stackTraceData = this.stackTraceAnalyzer.analyze(astTree.body); this.customNodeGroupStorage.getStorage().forEach(function (customNodeGroup) { customNodeGroup.initialize(); @@ -2219,21 +2215,25 @@ var Obfuscator = Obfuscator_1 = function () { }); this.obfuscationEventEmitter.emit(ObfuscationEvents_1.ObfuscationEvents.BeforeObfuscation, astTree, stackTraceData); if (this.options.controlFlowFlattening) { - this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.leave, this.nodeTransformersFactory(Obfuscator_1.nodeControlFlowTransformersMap)); + astTree = this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.leave, this.nodeTransformersFactory(Obfuscator_1.nodeControlFlowTransformersMap)); } - this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.enter, this.nodeTransformersFactory(Obfuscator_1.nodeObfuscatorsMap)); + console.time(); + astTree = this.transformAstTree(astTree, VisitorDirection_1.VisitorDirection.enter, this.nodeTransformersFactory(Obfuscator_1.nodeObfuscatorsMap)); + console.timeEnd(); this.obfuscationEventEmitter.emit(ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation, astTree, stackTraceData); return astTree; } }, { key: "transformAstTree", value: function transformAstTree(astTree, direction, nodeTransformersConcreteFactory) { - estraverse.traverse(astTree, (0, _defineProperty3.default)({}, direction, function (node, parentNode) { + estraverse.replace(astTree, (0, _defineProperty3.default)({}, direction, function (node, parentNode) { var nodeTransformers = nodeTransformersConcreteFactory(node.type); nodeTransformers.forEach(function (nodeTransformer) { - nodeTransformer.transformNode(node, parentNode); + node = nodeTransformer.transformNode(node, parentNode); }); + return node; })); + return astTree; } }]); return Obfuscator; @@ -2245,7 +2245,7 @@ exports.Obfuscator = Obfuscator; var Obfuscator_1; /***/ }, -/* 54 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2308,7 +2308,7 @@ SourceMapCorrector = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__par exports.SourceMapCorrector = SourceMapCorrector; /***/ }, -/* 55 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2326,7 +2326,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var fs = __webpack_require__(136); var mkdirp = __webpack_require__(138); -var path = __webpack_require__(50); +var path = __webpack_require__(49); var CLIUtils = function () { function CLIUtils() { @@ -2404,13 +2404,13 @@ CLIUtils.encoding = 'utf8'; exports.CLIUtils = CLIUtils; /***/ }, -/* 56 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { "use strict"; -var _keys = __webpack_require__(46); +var _keys = __webpack_require__(45); var _keys2 = _interopRequireDefault(_keys); @@ -2426,11 +2426,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var commander = __webpack_require__(134); -var path = __webpack_require__(50); +var path = __webpack_require__(49); var SourceMapMode_1 = __webpack_require__(27); var StringArrayEncoding_1 = __webpack_require__(30); var Default_1 = __webpack_require__(41); -var CLIUtils_1 = __webpack_require__(55); +var CLIUtils_1 = __webpack_require__(54); var JavaScriptObfuscator_1 = __webpack_require__(23); var JavaScriptObfuscatorCLI = function () { @@ -2561,7 +2561,7 @@ var JavaScriptObfuscatorCLI = function () { exports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLI; /***/ }, -/* 57 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2579,18 +2579,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var CustomNodesModule_1 = __webpack_require__(58); -var NodeControlFlowTransformersModule_1 = __webpack_require__(59); -var NodeObfuscatorsModule_1 = __webpack_require__(60); -var NodeTransformersModule_1 = __webpack_require__(61); -var StackTraceAnalyzerModule_1 = __webpack_require__(62); -var StoragesModule_1 = __webpack_require__(63); -var JavaScriptObfuscatorInternal_1 = __webpack_require__(51); -var ObfuscationEventEmitter_1 = __webpack_require__(83); -var ObfuscationResult_1 = __webpack_require__(52); -var Obfuscator_1 = __webpack_require__(53); -var Options_1 = __webpack_require__(100); -var SourceMapCorrector_1 = __webpack_require__(54); +var CustomNodesModule_1 = __webpack_require__(57); +var NodeControlFlowTransformersModule_1 = __webpack_require__(58); +var NodeObfuscatorsModule_1 = __webpack_require__(59); +var NodeTransformersModule_1 = __webpack_require__(60); +var StackTraceAnalyzerModule_1 = __webpack_require__(61); +var StoragesModule_1 = __webpack_require__(62); +var JavaScriptObfuscatorInternal_1 = __webpack_require__(50); +var ObfuscationEventEmitter_1 = __webpack_require__(82); +var ObfuscationResult_1 = __webpack_require__(51); +var Obfuscator_1 = __webpack_require__(52); +var Options_1 = __webpack_require__(99); +var SourceMapCorrector_1 = __webpack_require__(53); var InversifyContainerFacade = function () { function InversifyContainerFacade(options) { @@ -2637,7 +2637,7 @@ var InversifyContainerFacade = function () { exports.InversifyContainerFacade = InversifyContainerFacade; /***/ }, -/* 58 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2653,24 +2653,24 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var CustomNodes_1 = __webpack_require__(20); var CustomNodeGroups_1 = __webpack_require__(38); -var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(65); -var DebugProtectionCustomNodeGroup_1 = __webpack_require__(72); -var DomainLockCustomNodeGroup_1 = __webpack_require__(74); -var SelfDefendingCustomNodeGroup_1 = __webpack_require__(77); -var StringArrayCustomNodeGroup_1 = __webpack_require__(81); -var BinaryExpressionFunctionNode_1 = __webpack_require__(66); -var ControlFlowStorageCallNode_1 = __webpack_require__(67); -var ControlFlowStorageNode_1 = __webpack_require__(68); -var ConsoleOutputDisableExpressionNode_1 = __webpack_require__(64); -var DebugProtectionFunctionCallNode_1 = __webpack_require__(69); -var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(70); -var DebugProtectionFunctionNode_1 = __webpack_require__(71); -var DomainLockNode_1 = __webpack_require__(73); -var NodeCallsControllerFunctionNode_1 = __webpack_require__(75); -var SelfDefendingUnicodeNode_1 = __webpack_require__(76); -var StringArrayCallsWrapper_1 = __webpack_require__(78); -var StringArrayNode_1 = __webpack_require__(79); -var StringArrayRotateFunctionNode_1 = __webpack_require__(80); +var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(64); +var DebugProtectionCustomNodeGroup_1 = __webpack_require__(71); +var DomainLockCustomNodeGroup_1 = __webpack_require__(73); +var SelfDefendingCustomNodeGroup_1 = __webpack_require__(76); +var StringArrayCustomNodeGroup_1 = __webpack_require__(80); +var BinaryExpressionFunctionNode_1 = __webpack_require__(65); +var ControlFlowStorageCallNode_1 = __webpack_require__(66); +var ControlFlowStorageNode_1 = __webpack_require__(67); +var ConsoleOutputDisableExpressionNode_1 = __webpack_require__(63); +var DebugProtectionFunctionCallNode_1 = __webpack_require__(68); +var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(69); +var DebugProtectionFunctionNode_1 = __webpack_require__(70); +var DomainLockNode_1 = __webpack_require__(72); +var NodeCallsControllerFunctionNode_1 = __webpack_require__(74); +var SelfDefendingUnicodeNode_1 = __webpack_require__(75); +var StringArrayCallsWrapper_1 = __webpack_require__(77); +var StringArrayNode_1 = __webpack_require__(78); +var StringArrayRotateFunctionNode_1 = __webpack_require__(79); exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(BinaryExpressionFunctionNode_1.BinaryExpressionFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.BinaryExpressionFunctionNode); bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(ControlFlowStorageCallNode_1.ControlFlowStorageCallNode).whenTargetNamed(CustomNodes_1.CustomNodes.ControlFlowStorageCallNode); @@ -2713,7 +2713,7 @@ exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { }); /***/ }, -/* 59 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2728,7 +2728,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var NodeControlFlowReplacers_1 = __webpack_require__(39); -var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(86); +var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(85); exports.nodeControlFlowTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer).whenTargetNamed(NodeControlFlowReplacers_1.NodeControlFlowReplacers.BinaryExpressionControlFlowReplacer); bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer).toFactory(function (context) { @@ -2745,7 +2745,7 @@ exports.nodeControlFlowTransformersModule = new inversify_1.ContainerModule(func }); /***/ }, -/* 60 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2760,10 +2760,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var NodeObfuscatorsReplacers_1 = __webpack_require__(19); -var BooleanLiteralReplacer_1 = __webpack_require__(96); -var IdentifierReplacer_1 = __webpack_require__(97); -var NumberLiteralReplacer_1 = __webpack_require__(98); -var StringLiteralReplacer_1 = __webpack_require__(99); +var BooleanLiteralReplacer_1 = __webpack_require__(95); +var IdentifierReplacer_1 = __webpack_require__(96); +var NumberLiteralReplacer_1 = __webpack_require__(97); +var StringLiteralReplacer_1 = __webpack_require__(98); exports.nodeObfuscatorsModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(BooleanLiteralReplacer_1.BooleanLiteralReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.BooleanReplacer); bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(IdentifierReplacer_1.IdentifierReplacer).whenTargetNamed(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.IdentifierReplacer); @@ -2783,7 +2783,7 @@ exports.nodeObfuscatorsModule = new inversify_1.ContainerModule(function (bind) }); /***/ }, -/* 61 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2798,16 +2798,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var NodeTransformers_1 = __webpack_require__(40); -var FunctionControlFlowTransformer_1 = __webpack_require__(84); -var CatchClauseObfuscator_1 = __webpack_require__(87); -var FunctionDeclarationObfuscator_1 = __webpack_require__(88); -var FunctionObfuscator_1 = __webpack_require__(89); -var LabeledStatementObfuscator_1 = __webpack_require__(90); -var LiteralObfuscator_1 = __webpack_require__(91); -var MemberExpressionObfuscator_1 = __webpack_require__(92); -var MethodDefinitionObfuscator_1 = __webpack_require__(93); -var ObjectExpressionObfuscator_1 = __webpack_require__(94); -var VariableDeclarationObfuscator_1 = __webpack_require__(95); +var FunctionControlFlowTransformer_1 = __webpack_require__(83); +var CatchClauseObfuscator_1 = __webpack_require__(86); +var FunctionDeclarationObfuscator_1 = __webpack_require__(87); +var FunctionObfuscator_1 = __webpack_require__(88); +var LabeledStatementObfuscator_1 = __webpack_require__(89); +var LiteralObfuscator_1 = __webpack_require__(90); +var MemberExpressionObfuscator_1 = __webpack_require__(91); +var MethodDefinitionObfuscator_1 = __webpack_require__(92); +var ObjectExpressionObfuscator_1 = __webpack_require__(93); +var VariableDeclarationObfuscator_1 = __webpack_require__(94); exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(CatchClauseObfuscator_1.CatchClauseObfuscator).whenTargetNamed(NodeTransformers_1.NodeTransformers.CatchClauseObfuscator); @@ -2842,7 +2842,7 @@ exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) }); /***/ }, -/* 62 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2857,10 +2857,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var CalleeDataExtractors_1 = __webpack_require__(37); -var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(104); -var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(105); -var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(106); -var StackTraceAnalyzer_1 = __webpack_require__(103); +var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(103); +var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(104); +var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(105); +var StackTraceAnalyzer_1 = __webpack_require__(102); exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IStackTraceAnalyzer).to(StackTraceAnalyzer_1.StackTraceAnalyzer).inSingletonScope(); bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor).to(FunctionDeclarationCalleeDataExtractor_1.FunctionDeclarationCalleeDataExtractor).whenTargetNamed(CalleeDataExtractors_1.CalleeDataExtractors.FunctionDeclarationCalleeDataExtractor); @@ -2880,7 +2880,7 @@ exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bin }); /***/ }, -/* 63 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2888,9 +2888,9 @@ exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bin var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var ControlFlowStorage_1 = __webpack_require__(108); -var CustomNodeGroupStorage_1 = __webpack_require__(109); -var StringArrayStorage_1 = __webpack_require__(110); +var ControlFlowStorage_1 = __webpack_require__(107); +var CustomNodeGroupStorage_1 = __webpack_require__(108); +var StringArrayStorage_1 = __webpack_require__(109); exports.storagesModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage).to(CustomNodeGroupStorage_1.CustomNodeGroupStorage).inSingletonScope(); bind(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage).to(StringArrayStorage_1.StringArrayStorage).inSingletonScope(); @@ -2904,7 +2904,7 @@ exports.storagesModule = new inversify_1.ContainerModule(function (bind) { }); /***/ }, -/* 64 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2936,11 +2936,11 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); -var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(114); +var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(113); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(15); -var NodeUtils_1 = __webpack_require__(9); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var NodeUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var ConsoleOutputDisableExpressionNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(ConsoleOutputDisableExpressionNode, _AbstractCustomNode_); @@ -2975,7 +2975,7 @@ ConsoleOutputDisableExpressionNode = tslib_1.__decorate([inversify_1.injectable( exports.ConsoleOutputDisableExpressionNode = ConsoleOutputDisableExpressionNode; /***/ }, -/* 65 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3015,7 +3015,7 @@ var CustomNodes_1 = __webpack_require__(20); var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(26); var NodeAppender_1 = __webpack_require__(24); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var ConsoleOutputCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(ConsoleOutputCustomNodeGroup, _AbstractCustomNodeGr); @@ -3070,7 +3070,7 @@ ConsoleOutputCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tsl exports.ConsoleOutputCustomNodeGroup = ConsoleOutputCustomNodeGroup; /***/ }, -/* 66 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3104,7 +3104,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(15); var Nodes_1 = __webpack_require__(31); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var BinaryExpressionFunctionNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(BinaryExpressionFunctionNode, _AbstractCustomNode_); @@ -3131,7 +3131,7 @@ BinaryExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tsl exports.BinaryExpressionFunctionNode = BinaryExpressionFunctionNode; /***/ }, -/* 67 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3197,7 +3197,7 @@ ControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib exports.ControlFlowStorageCallNode = ControlFlowStorageCallNode; /***/ }, -/* 68 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3239,7 +3239,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(15); var Nodes_1 = __webpack_require__(31); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var ControlFlowStorageNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(ControlFlowStorageNode, _AbstractCustomNode_); @@ -3263,7 +3263,7 @@ var ControlFlowStorageNode = function (_AbstractCustomNode_) { return Nodes_1.Nodes.getPropertyNode(Nodes_1.Nodes.getIdentifierNode(key), value.getNode()[0]); })))]); - NodeUtils_1.NodeUtils.parentize(structure); + structure = NodeUtils_1.NodeUtils.parentize(structure); return [structure]; } }]); @@ -3273,6 +3273,75 @@ tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design: ControlFlowStorageNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ControlFlowStorageNode); exports.ControlFlowStorageNode = ControlFlowStorageNode; +/***/ }, +/* 68 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; + + +var _getPrototypeOf = __webpack_require__(5); + +var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +var _createClass2 = __webpack_require__(1); + +var _createClass3 = _interopRequireDefault(_createClass2); + +var _possibleConstructorReturn2 = __webpack_require__(7); + +var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); + +var _inherits2 = __webpack_require__(6); + +var _inherits3 = _interopRequireDefault(_inherits2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var tslib_1 = __webpack_require__(3); +var inversify_1 = __webpack_require__(2); +var ServiceIdentifiers_1 = __webpack_require__(4); +var format = __webpack_require__(18); +var Initializable_1 = __webpack_require__(10); +var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(114); +var AbstractCustomNode_1 = __webpack_require__(15); +var NodeUtils_1 = __webpack_require__(8); +var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { + (0, _inherits3.default)(DebugProtectionFunctionCallNode, _AbstractCustomNode_); + + function DebugProtectionFunctionCallNode(options) { + (0, _classCallCheck3.default)(this, DebugProtectionFunctionCallNode); + return (0, _possibleConstructorReturn3.default)(this, (DebugProtectionFunctionCallNode.__proto__ || (0, _getPrototypeOf2.default)(DebugProtectionFunctionCallNode)).call(this, options)); + } + + (0, _createClass3.default)(DebugProtectionFunctionCallNode, [{ + key: "initialize", + value: function initialize(debugProtectionFunctionName) { + this.debugProtectionFunctionName = debugProtectionFunctionName; + } + }, { + key: "getNodeStructure", + value: function getNodeStructure() { + return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate()); + } + }, { + key: "getTemplate", + value: function getTemplate() { + return format(DebufProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), { + debugProtectionFunctionName: this.debugProtectionFunctionName + }); + } + }]); + return DebugProtectionFunctionCallNode; +}(AbstractCustomNode_1.AbstractCustomNode); +tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionCallNode.prototype, "debugProtectionFunctionName", void 0); +DebugProtectionFunctionCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionCallNode); +exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode; + /***/ }, /* 69 */ /***/ function(module, exports, __webpack_require__) { @@ -3307,18 +3376,18 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var Initializable_1 = __webpack_require__(10); -var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(115); +var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(115); var AbstractCustomNode_1 = __webpack_require__(15); -var NodeUtils_1 = __webpack_require__(9); -var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { - (0, _inherits3.default)(DebugProtectionFunctionCallNode, _AbstractCustomNode_); +var NodeUtils_1 = __webpack_require__(8); +var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { + (0, _inherits3.default)(DebugProtectionFunctionIntervalNode, _AbstractCustomNode_); - function DebugProtectionFunctionCallNode(options) { - (0, _classCallCheck3.default)(this, DebugProtectionFunctionCallNode); - return (0, _possibleConstructorReturn3.default)(this, (DebugProtectionFunctionCallNode.__proto__ || (0, _getPrototypeOf2.default)(DebugProtectionFunctionCallNode)).call(this, options)); + function DebugProtectionFunctionIntervalNode(options) { + (0, _classCallCheck3.default)(this, DebugProtectionFunctionIntervalNode); + return (0, _possibleConstructorReturn3.default)(this, (DebugProtectionFunctionIntervalNode.__proto__ || (0, _getPrototypeOf2.default)(DebugProtectionFunctionIntervalNode)).call(this, options)); } - (0, _createClass3.default)(DebugProtectionFunctionCallNode, [{ + (0, _createClass3.default)(DebugProtectionFunctionIntervalNode, [{ key: "initialize", value: function initialize(debugProtectionFunctionName) { this.debugProtectionFunctionName = debugProtectionFunctionName; @@ -3331,16 +3400,16 @@ var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { }, { key: "getTemplate", value: function getTemplate() { - return format(DebufProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), { + return format(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), { debugProtectionFunctionName: this.debugProtectionFunctionName }); } }]); - return DebugProtectionFunctionCallNode; + return DebugProtectionFunctionIntervalNode; }(AbstractCustomNode_1.AbstractCustomNode); -tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionCallNode.prototype, "debugProtectionFunctionName", void 0); -DebugProtectionFunctionCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionCallNode); -exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode; +tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionIntervalNode.prototype, "debugProtectionFunctionName", void 0); +DebugProtectionFunctionIntervalNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionIntervalNode); +exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode; /***/ }, /* 70 */ @@ -3376,78 +3445,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var Initializable_1 = __webpack_require__(10); -var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(116); +var DebugProtectionFunctionTemplate_1 = __webpack_require__(116); var AbstractCustomNode_1 = __webpack_require__(15); -var NodeUtils_1 = __webpack_require__(9); -var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { - (0, _inherits3.default)(DebugProtectionFunctionIntervalNode, _AbstractCustomNode_); - - function DebugProtectionFunctionIntervalNode(options) { - (0, _classCallCheck3.default)(this, DebugProtectionFunctionIntervalNode); - return (0, _possibleConstructorReturn3.default)(this, (DebugProtectionFunctionIntervalNode.__proto__ || (0, _getPrototypeOf2.default)(DebugProtectionFunctionIntervalNode)).call(this, options)); - } - - (0, _createClass3.default)(DebugProtectionFunctionIntervalNode, [{ - key: "initialize", - value: function initialize(debugProtectionFunctionName) { - this.debugProtectionFunctionName = debugProtectionFunctionName; - } - }, { - key: "getNodeStructure", - value: function getNodeStructure() { - return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate()); - } - }, { - key: "getTemplate", - value: function getTemplate() { - return format(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), { - debugProtectionFunctionName: this.debugProtectionFunctionName - }); - } - }]); - return DebugProtectionFunctionIntervalNode; -}(AbstractCustomNode_1.AbstractCustomNode); -tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionIntervalNode.prototype, "debugProtectionFunctionName", void 0); -DebugProtectionFunctionIntervalNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionIntervalNode); -exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode; - -/***/ }, -/* 71 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var _getPrototypeOf = __webpack_require__(5); - -var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -var _createClass2 = __webpack_require__(1); - -var _createClass3 = _interopRequireDefault(_createClass2); - -var _possibleConstructorReturn2 = __webpack_require__(7); - -var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); - -var _inherits2 = __webpack_require__(6); - -var _inherits3 = _interopRequireDefault(_inherits2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var tslib_1 = __webpack_require__(3); -var inversify_1 = __webpack_require__(2); -var ServiceIdentifiers_1 = __webpack_require__(4); -var format = __webpack_require__(18); -var Initializable_1 = __webpack_require__(10); -var DebugProtectionFunctionTemplate_1 = __webpack_require__(117); -var AbstractCustomNode_1 = __webpack_require__(15); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var DebugProtectionFunctionNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(DebugProtectionFunctionNode, _AbstractCustomNode_); @@ -3481,7 +3481,7 @@ DebugProtectionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tsli exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode; /***/ }, -/* 72 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3521,7 +3521,7 @@ var CustomNodes_1 = __webpack_require__(20); var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(26); var NodeAppender_1 = __webpack_require__(24); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var DebugProtectionCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(DebugProtectionCustomNodeGroup, _AbstractCustomNodeGr); @@ -3579,7 +3579,7 @@ DebugProtectionCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), t exports.DebugProtectionCustomNodeGroup = DebugProtectionCustomNodeGroup; /***/ }, -/* 73 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3616,11 +3616,11 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var Initializable_1 = __webpack_require__(10); -var DomainLockNodeTemplate_1 = __webpack_require__(118); +var DomainLockNodeTemplate_1 = __webpack_require__(117); var AbstractCustomNode_1 = __webpack_require__(15); var CryptUtils_1 = __webpack_require__(33); -var NodeUtils_1 = __webpack_require__(9); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var NodeUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var DomainLockNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(DomainLockNode, _AbstractCustomNode_); @@ -3664,7 +3664,7 @@ DomainLockNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0 exports.DomainLockNode = DomainLockNode; /***/ }, -/* 74 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3704,7 +3704,7 @@ var CustomNodes_1 = __webpack_require__(20); var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(26); var NodeAppender_1 = __webpack_require__(24); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var DomainLockCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(DomainLockCustomNodeGroup, _AbstractCustomNodeGr); @@ -3759,7 +3759,7 @@ DomainLockCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_ exports.DomainLockCustomNodeGroup = DomainLockCustomNodeGroup; /***/ }, -/* 75 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3793,11 +3793,11 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var ObfuscationEvents_1 = __webpack_require__(22); var Initializable_1 = __webpack_require__(10); -var SingleNodeCallControllerTemplate_1 = __webpack_require__(113); +var SingleNodeCallControllerTemplate_1 = __webpack_require__(112); var NoCustomNodes_1 = __webpack_require__(29); var AbstractCustomNode_1 = __webpack_require__(15); var JavaScriptObfuscator_1 = __webpack_require__(23); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var NodeCallsControllerFunctionNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(NodeCallsControllerFunctionNode, _AbstractCustomNode_); @@ -3838,7 +3838,7 @@ NodeCallsControllerFunctionNode = tslib_1.__decorate([inversify_1.injectable(), exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode; /***/ }, -/* 76 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3872,11 +3872,11 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(29); -var SelfDefendingTemplate_1 = __webpack_require__(119); +var SelfDefendingTemplate_1 = __webpack_require__(118); var AbstractCustomNode_1 = __webpack_require__(15); var JavaScriptObfuscator_1 = __webpack_require__(23); -var NodeUtils_1 = __webpack_require__(9); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var NodeUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var SelfDefendingUnicodeNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(SelfDefendingUnicodeNode, _AbstractCustomNode_); @@ -3911,7 +3911,7 @@ SelfDefendingUnicodeNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1 exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode; /***/ }, -/* 77 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3951,7 +3951,7 @@ var CustomNodes_1 = __webpack_require__(20); var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(26); var NodeAppender_1 = __webpack_require__(24); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var SelfDefendingCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(SelfDefendingCustomNodeGroup, _AbstractCustomNodeGr); @@ -4006,7 +4006,7 @@ SelfDefendingCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tsl exports.SelfDefendingCustomNodeGroup = SelfDefendingCustomNodeGroup; /***/ }, -/* 78 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4041,15 +4041,15 @@ var format = __webpack_require__(18); var StringArrayEncoding_1 = __webpack_require__(30); var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(29); -var AtobTemplate_1 = __webpack_require__(111); -var Rc4Template_1 = __webpack_require__(112); -var SelfDefendingTemplate_1 = __webpack_require__(120); -var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(121); -var StringArrayCallsWrapperTemplate_1 = __webpack_require__(122); -var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(123); +var AtobTemplate_1 = __webpack_require__(110); +var Rc4Template_1 = __webpack_require__(111); +var SelfDefendingTemplate_1 = __webpack_require__(119); +var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(120); +var StringArrayCallsWrapperTemplate_1 = __webpack_require__(121); +var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(122); var AbstractCustomNode_1 = __webpack_require__(15); var JavaScriptObfuscator_1 = __webpack_require__(23); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var StringArrayCallsWrapper = function (_AbstractCustomNode_) { (0, _inherits3.default)(StringArrayCallsWrapper, _AbstractCustomNode_); @@ -4120,7 +4120,7 @@ StringArrayCallsWrapper = tslib_1.__decorate([inversify_1.injectable(), tslib_1. exports.StringArrayCallsWrapper = StringArrayCallsWrapper; /***/ }, -/* 79 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4142,7 +4142,7 @@ var _possibleConstructorReturn2 = __webpack_require__(7); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); -var _get2 = __webpack_require__(47); +var _get2 = __webpack_require__(46); var _get3 = _interopRequireDefault(_get2); @@ -4157,9 +4157,9 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var Initializable_1 = __webpack_require__(10); -var StringArrayTemplate_1 = __webpack_require__(124); +var StringArrayTemplate_1 = __webpack_require__(123); var AbstractCustomNode_1 = __webpack_require__(15); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var StringArrayNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(StringArrayNode, _AbstractCustomNode_); @@ -4204,7 +4204,7 @@ StringArrayNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param( exports.StringArrayNode = StringArrayNode; /***/ }, -/* 80 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4238,12 +4238,12 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(18); var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(29); -var SelfDefendingTemplate_1 = __webpack_require__(125); -var StringArrayRotateFunctionTemplate_1 = __webpack_require__(126); +var SelfDefendingTemplate_1 = __webpack_require__(124); +var StringArrayRotateFunctionTemplate_1 = __webpack_require__(125); var AbstractCustomNode_1 = __webpack_require__(15); var JavaScriptObfuscator_1 = __webpack_require__(23); -var NodeUtils_1 = __webpack_require__(9); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var NodeUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(13); var StringArrayRotateFunctionNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(StringArrayRotateFunctionNode, _AbstractCustomNode_); @@ -4297,7 +4297,7 @@ StringArrayRotateFunctionNode = tslib_1.__decorate([inversify_1.injectable(), ts exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode; /***/ }, -/* 81 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4337,7 +4337,7 @@ var CustomNodes_1 = __webpack_require__(20); var ObfuscationEvents_1 = __webpack_require__(22); var AbstractCustomNodeGroup_1 = __webpack_require__(26); var NodeAppender_1 = __webpack_require__(24); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(13); var StringArrayCustomNodeGroup = function (_AbstractCustomNodeGr) { (0, _inherits3.default)(StringArrayCustomNodeGroup, _AbstractCustomNodeGr); @@ -4407,7 +4407,7 @@ StringArrayCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib exports.StringArrayCustomNodeGroup = StringArrayCustomNodeGroup; /***/ }, -/* 82 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4420,7 +4420,7 @@ exports.VisitorDirection = Utils_1.Utils.strEnumify({ }); /***/ }, -/* 83 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4462,7 +4462,7 @@ ObfuscationEventEmitter = tslib_1.__decorate([inversify_1.injectable(), tslib_1. exports.ObfuscationEventEmitter = ObfuscationEventEmitter; /***/ }, -/* 84 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4504,8 +4504,8 @@ var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); var NodeAppender_1 = __webpack_require__(24); var NodeControlFlowReplacers_1 = __webpack_require__(39); -var NodeUtils_1 = __webpack_require__(9); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var NodeUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) { (0, _inherits3.default)(FunctionControlFlowTransformer, _AbstractNodeTransfor); @@ -4526,6 +4526,7 @@ var FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = function key: "transformNode", value: function transformNode(functionNode) { this.changeFunctionBodyControlFlow(functionNode); + return functionNode; } }, { key: "changeFunctionBodyControlFlow", @@ -4594,7 +4595,7 @@ exports.FunctionControlFlowTransformer = FunctionControlFlowTransformer; var FunctionControlFlowTransformer_1; /***/ }, -/* 85 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4618,7 +4619,7 @@ AbstractControlFlowReplacer = tslib_1.__decorate([inversify_1.injectable(), tsli exports.AbstractControlFlowReplacer = AbstractControlFlowReplacer; /***/ }, -/* 86 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4654,9 +4655,9 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var CustomNodes_1 = __webpack_require__(20); -var AbstractControlFlowReplacer_1 = __webpack_require__(85); +var AbstractControlFlowReplacer_1 = __webpack_require__(84); var Node_1 = __webpack_require__(12); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = function (_AbstractControlFlowR) { (0, _inherits3.default)(BinaryExpressionControlFlowReplacer, _AbstractControlFlowR); @@ -4715,7 +4716,7 @@ exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplace var BinaryExpressionControlFlowReplacer_1; /***/ }, -/* 87 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4751,7 +4752,7 @@ var NodeObfuscatorsReplacers_1 = __webpack_require__(19); var NodeType_1 = __webpack_require__(16); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var CatchClauseObfuscator = function (_AbstractNodeTransfor) { (0, _inherits3.default)(CatchClauseObfuscator, _AbstractNodeTransfor); @@ -4770,6 +4771,7 @@ var CatchClauseObfuscator = function (_AbstractNodeTransfor) { var nodeIdentifier = this.nodeIdentifier++; this.storeCatchClauseParam(catchClauseNode, nodeIdentifier); this.replaceCatchClauseParam(catchClauseNode, nodeIdentifier); + return catchClauseNode; } }, { key: "storeCatchClauseParam", @@ -4802,7 +4804,7 @@ CatchClauseObfuscator = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__ exports.CatchClauseObfuscator = CatchClauseObfuscator; /***/ }, -/* 88 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4846,7 +4848,7 @@ var NodeObfuscatorsReplacers_1 = __webpack_require__(19); var NodeType_1 = __webpack_require__(16); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var FunctionDeclarationObfuscator = function (_AbstractNodeTransfor) { (0, _inherits3.default)(FunctionDeclarationObfuscator, _AbstractNodeTransfor); @@ -4866,10 +4868,11 @@ var FunctionDeclarationObfuscator = function (_AbstractNodeTransfor) { var nodeIdentifier = this.nodeIdentifier++; var blockScopeOfFunctionDeclarationNode = NodeUtils_1.NodeUtils.getBlockScopesOfNode(functionDeclarationNode)[0]; if (blockScopeOfFunctionDeclarationNode.type === NodeType_1.NodeType.Program) { - return; + return functionDeclarationNode; } this.storeFunctionName(functionDeclarationNode, nodeIdentifier); this.replaceFunctionName(blockScopeOfFunctionDeclarationNode, nodeIdentifier); + return functionDeclarationNode; } }, { key: "storeFunctionName", @@ -4939,7 +4942,7 @@ FunctionDeclarationObfuscator = tslib_1.__decorate([inversify_1.injectable(), ts exports.FunctionDeclarationObfuscator = FunctionDeclarationObfuscator; /***/ }, -/* 89 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4975,7 +4978,7 @@ var NodeObfuscatorsReplacers_1 = __webpack_require__(19); var NodeType_1 = __webpack_require__(16); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var FunctionObfuscator = function (_AbstractNodeTransfor) { (0, _inherits3.default)(FunctionObfuscator, _AbstractNodeTransfor); @@ -4994,6 +4997,7 @@ var FunctionObfuscator = function (_AbstractNodeTransfor) { var nodeIdentifier = this.nodeIdentifier++; this.storeFunctionParams(functionNode, nodeIdentifier); this.replaceFunctionParams(functionNode, nodeIdentifier); + return functionNode; } }, { key: "storeFunctionParams", @@ -5036,7 +5040,7 @@ FunctionObfuscator = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__par exports.FunctionObfuscator = FunctionObfuscator; /***/ }, -/* 90 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5072,7 +5076,7 @@ var NodeObfuscatorsReplacers_1 = __webpack_require__(19); var NodeType_1 = __webpack_require__(16); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var LabeledStatementObfuscator = function (_AbstractNodeTransfor) { (0, _inherits3.default)(LabeledStatementObfuscator, _AbstractNodeTransfor); @@ -5091,6 +5095,7 @@ var LabeledStatementObfuscator = function (_AbstractNodeTransfor) { var nodeIdentifier = this.nodeIdentifier++; this.storeLabeledStatementName(labeledStatementNode, nodeIdentifier); this.replaceLabeledStatementName(labeledStatementNode, nodeIdentifier); + return labeledStatementNode; } }, { key: "storeLabeledStatementName", @@ -5123,7 +5128,7 @@ LabeledStatementObfuscator = tslib_1.__decorate([inversify_1.injectable(), tslib exports.LabeledStatementObfuscator = LabeledStatementObfuscator; /***/ }, -/* 91 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5178,7 +5183,7 @@ var LiteralObfuscator = function (_AbstractNodeTransfor) { key: "transformNode", value: function transformNode(literalNode, parentNode) { if (Node_1.Node.isPropertyNode(parentNode) && parentNode.key === literalNode) { - return; + return literalNode; } var content = void 0; switch ((0, _typeof3.default)(literalNode.value)) { @@ -5192,12 +5197,13 @@ var LiteralObfuscator = function (_AbstractNodeTransfor) { content = this.replacersFactory(NodeObfuscatorsReplacers_1.NodeObfuscatorsReplacers.StringLiteralReplacer).replace(literalNode.value); break; default: - return; + return literalNode; } literalNode['x-verbatim-property'] = { content: content, precedence: escodegen.Precedence.Primary }; + return literalNode; } }]); return LiteralObfuscator; @@ -5206,7 +5212,7 @@ LiteralObfuscator = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__para exports.LiteralObfuscator = LiteralObfuscator; /***/ }, -/* 92 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5262,11 +5268,12 @@ var MemberExpressionObfuscator = function (_AbstractNodeTransfor) { } if (Node_1.Node.isIdentifierNode(memberExpressionNode.property)) { if (memberExpressionNode.computed) { - return; + return memberExpressionNode; } memberExpressionNode.computed = true; memberExpressionNode.property = this.obfuscateIdentifierProperty(memberExpressionNode.property); } + return memberExpressionNode; } }, { key: "obfuscateIdentifierProperty", @@ -5299,7 +5306,7 @@ MemberExpressionObfuscator = tslib_1.__decorate([inversify_1.injectable(), tslib exports.MemberExpressionObfuscator = MemberExpressionObfuscator; /***/ }, -/* 93 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5350,6 +5357,7 @@ var MethodDefinitionObfuscator = MethodDefinitionObfuscator_1 = function (_Abstr key: "transformNode", value: function transformNode(methodDefinitionNode, parentNode) { this.replaceMethodName(methodDefinitionNode); + return methodDefinitionNode; } }, { key: "replaceMethodName", @@ -5376,7 +5384,7 @@ exports.MethodDefinitionObfuscator = MethodDefinitionObfuscator; var MethodDefinitionObfuscator_1; /***/ }, -/* 94 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5439,6 +5447,7 @@ var ObjectExpressionObfuscator = ObjectExpressionObfuscator_1 = function (_Abstr } }); }); + return objectExpressionNode; } }], [{ key: "obfuscateLiteralPropertyKey", @@ -5472,7 +5481,7 @@ exports.ObjectExpressionObfuscator = ObjectExpressionObfuscator; var ObjectExpressionObfuscator_1; /***/ }, -/* 95 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5516,7 +5525,7 @@ var NodeObfuscatorsReplacers_1 = __webpack_require__(19); var NodeType_1 = __webpack_require__(16); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var VariableDeclarationObfuscator = function (_AbstractNodeTransfor) { (0, _inherits3.default)(VariableDeclarationObfuscator, _AbstractNodeTransfor); @@ -5535,12 +5544,13 @@ var VariableDeclarationObfuscator = function (_AbstractNodeTransfor) { value: function transformNode(variableDeclarationNode, parentNode) { var blockScopeOfVariableDeclarationNode = NodeUtils_1.NodeUtils.getBlockScopesOfNode(variableDeclarationNode)[0]; if (blockScopeOfVariableDeclarationNode.type === NodeType_1.NodeType.Program) { - return; + return variableDeclarationNode; } var nodeIdentifier = this.nodeIdentifier++; var scopeNode = variableDeclarationNode.kind === 'var' ? blockScopeOfVariableDeclarationNode : parentNode; this.storeVariableNames(variableDeclarationNode, nodeIdentifier); this.replaceVariableNames(scopeNode, nodeIdentifier); + return variableDeclarationNode; } }, { key: "storeVariableNames", @@ -5612,7 +5622,7 @@ VariableDeclarationObfuscator = tslib_1.__decorate([inversify_1.injectable(), ts exports.VariableDeclarationObfuscator = VariableDeclarationObfuscator; /***/ }, -/* 96 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5665,7 +5675,7 @@ BooleanLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1._ exports.BooleanLiteralReplacer = BooleanLiteralReplacer; /***/ }, -/* 97 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5701,7 +5711,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var AbstractReplacer_1 = __webpack_require__(28); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var IdentifierReplacer = function (_AbstractReplacer_1$A) { (0, _inherits3.default)(IdentifierReplacer, _AbstractReplacer_1$A); @@ -5744,7 +5754,7 @@ IdentifierReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__par exports.IdentifierReplacer = IdentifierReplacer; /***/ }, -/* 98 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5815,7 +5825,7 @@ NumberLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__ exports.NumberLiteralReplacer = NumberLiteralReplacer; /***/ }, -/* 99 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5853,7 +5863,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var StringArrayEncoding_1 = __webpack_require__(30); var AbstractReplacer_1 = __webpack_require__(28); var CryptUtils_1 = __webpack_require__(33); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(13); var StringLiteralReplacer = StringLiteralReplacer_1 = function (_AbstractReplacer_1$A) { (0, _inherits3.default)(StringLiteralReplacer, _AbstractReplacer_1$A); @@ -5930,13 +5940,13 @@ exports.StringLiteralReplacer = StringLiteralReplacer; var StringLiteralReplacer_1; /***/ }, -/* 100 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { "use strict"; -var _assign = __webpack_require__(44); +var _assign = __webpack_require__(127); var _assign2 = _interopRequireDefault(_assign); @@ -5950,8 +5960,8 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var class_validator_1 = __webpack_require__(133); var Default_1 = __webpack_require__(41); -var OptionsNormalizer_1 = __webpack_require__(101); -var ValidationErrorsFormatter_1 = __webpack_require__(102); +var OptionsNormalizer_1 = __webpack_require__(100); +var ValidationErrorsFormatter_1 = __webpack_require__(101); var Options = Options_1 = function Options(inputOptions) { (0, _classCallCheck3.default)(this, Options); @@ -6000,7 +6010,7 @@ exports.Options = Options; var Options_1; /***/ }, -/* 101 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6185,7 +6195,7 @@ OptionsNormalizer.normalizerRules = [OptionsNormalizer.controlFlowFlatteningThre exports.OptionsNormalizer = OptionsNormalizer; /***/ }, -/* 102 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6261,7 +6271,7 @@ var ValidationErrorsFormatter = function () { exports.ValidationErrorsFormatter = ValidationErrorsFormatter; /***/ }, -/* 103 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6283,7 +6293,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(14); var CalleeDataExtractors_1 = __webpack_require__(37); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var StackTraceAnalyzer = StackTraceAnalyzer_1 = function () { function StackTraceAnalyzer(calleeDataExtractorsFactory) { (0, _classCallCheck3.default)(this, StackTraceAnalyzer); @@ -6365,7 +6375,7 @@ exports.StackTraceAnalyzer = StackTraceAnalyzer; var StackTraceAnalyzer_1; /***/ }, -/* 104 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6398,7 +6408,7 @@ var inversify_1 = __webpack_require__(2); var estraverse = __webpack_require__(14); var AbstractCalleeDataExtractor_1 = __webpack_require__(32); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var FunctionDeclarationCalleeDataExtractor = function (_AbstractCalleeDataEx) { (0, _inherits3.default)(FunctionDeclarationCalleeDataExtractor, _AbstractCalleeDataEx); @@ -6443,7 +6453,7 @@ FunctionDeclarationCalleeDataExtractor = tslib_1.__decorate([inversify_1.injecta exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor; /***/ }, -/* 105 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6476,7 +6486,7 @@ var inversify_1 = __webpack_require__(2); var estraverse = __webpack_require__(14); var AbstractCalleeDataExtractor_1 = __webpack_require__(32); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var FunctionExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { (0, _inherits3.default)(FunctionExpressionCalleeDataExtractor, _AbstractCalleeDataEx); @@ -6524,7 +6534,7 @@ FunctionExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectab exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor; /***/ }, -/* 106 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6560,7 +6570,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var estraverse = __webpack_require__(14); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(9); +var NodeUtils_1 = __webpack_require__(8); var AbstractCalleeDataExtractor_1 = __webpack_require__(32); var ObjectExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { (0, _inherits3.default)(ObjectExpressionCalleeDataExtractor, _AbstractCalleeDataEx); @@ -6679,7 +6689,7 @@ ObjectExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor; /***/ }, -/* 107 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6702,7 +6712,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var Initializable_1 = __webpack_require__(10); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var ArrayStorage = function () { function ArrayStorage() { (0, _classCallCheck3.default)(this, ArrayStorage); @@ -6767,7 +6777,7 @@ ArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata( exports.ArrayStorage = ArrayStorage; /***/ }, -/* 108 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6811,7 +6821,7 @@ var ControlFlowStorage = function (_MapStorage_1$MapStor) { exports.ControlFlowStorage = ControlFlowStorage; /***/ }, -/* 109 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6848,7 +6858,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var CustomNodeGroups_1 = __webpack_require__(38); var MapStorage_1 = __webpack_require__(42); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var RandomGeneratorUtils_1 = __webpack_require__(9); var CustomNodeGroupStorage = CustomNodeGroupStorage_1 = function (_MapStorage_1$MapStor) { (0, _inherits3.default)(CustomNodeGroupStorage, _MapStorage_1$MapStor); @@ -6887,7 +6897,7 @@ exports.CustomNodeGroupStorage = CustomNodeGroupStorage; var CustomNodeGroupStorage_1; /***/ }, -/* 110 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6909,7 +6919,7 @@ var _possibleConstructorReturn2 = __webpack_require__(7); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); -var _get2 = __webpack_require__(47); +var _get2 = __webpack_require__(46); var _get3 = _interopRequireDefault(_get2); @@ -6921,8 +6931,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); -var ArrayStorage_1 = __webpack_require__(107); -var RandomGeneratorUtils_1 = __webpack_require__(8); +var ArrayStorage_1 = __webpack_require__(106); +var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(13); var StringArrayStorage = function (_ArrayStorage_1$Array) { (0, _inherits3.default)(StringArrayStorage, _ArrayStorage_1$Array); @@ -6965,7 +6975,7 @@ StringArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__met exports.StringArrayStorage = StringArrayStorage; /***/ }, -/* 111 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6977,7 +6987,7 @@ function AtobTemplate() { exports.AtobTemplate = AtobTemplate; /***/ }, -/* 112 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6989,7 +6999,7 @@ function Rc4Template() { exports.Rc4Template = Rc4Template; /***/ }, -/* 113 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7001,7 +7011,7 @@ function SingleNodeCallControllerTemplate() { exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate; /***/ }, -/* 114 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7013,7 +7023,7 @@ function ConsoleOutputDisableExpressionTemplate() { exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate; /***/ }, -/* 115 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7025,7 +7035,7 @@ function DebugProtectionFunctionCallTemplate() { exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate; /***/ }, -/* 116 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7037,7 +7047,7 @@ function DebugProtectionFunctionIntervalTemplate() { exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate; /***/ }, -/* 117 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7049,7 +7059,7 @@ function DebugProtectionFunctionTemplate() { exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate; /***/ }, -/* 118 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7061,7 +7071,7 @@ function DomainLockNodeTemplate() { exports.DomainLockNodeTemplate = DomainLockNodeTemplate; /***/ }, -/* 119 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7074,7 +7084,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 120 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7087,7 +7097,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 121 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7099,7 +7109,7 @@ function StringArrayBase64DecodeNodeTemplate() { exports.StringArrayBase64DecodeNodeTemplate = StringArrayBase64DecodeNodeTemplate; /***/ }, -/* 122 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7111,7 +7121,7 @@ function StringArrayCallsWrapperTemplate() { exports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate; /***/ }, -/* 123 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7123,7 +7133,7 @@ function StringArrayRc4DecodeNodeTemplate() { exports.StringArrayRc4DecodeNodeTemplate = StringArrayRc4DecodeNodeTemplate; /***/ }, -/* 124 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7135,7 +7145,7 @@ function StringArrayTemplate() { exports.StringArrayTemplate = StringArrayTemplate; /***/ }, -/* 125 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7148,7 +7158,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 126 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7160,11 +7170,17 @@ function StringArrayRotateFunctionTemplate() { exports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate; /***/ }, -/* 127 */ +/* 126 */ /***/ function(module, exports) { module.exports = require("babel-polyfill"); +/***/ }, +/* 127 */ +/***/ function(module, exports) { + +module.exports = require("babel-runtime/core-js/object/assign"); + /***/ }, /* 128 */ /***/ function(module, exports) { diff --git a/package.json b/package.json index 0a2dfd3e..aa23cc50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "javascript-obfuscator", - "version": "0.9.0-dev.4", + "version": "0.9.0-dev.5", "description": "JavaScript obfuscator", "keywords": [ "obfuscator", @@ -26,7 +26,7 @@ "class-validator": "0.6.6", "commander": "2.9.0", "escodegen": "1.8.1", - "esprima": "3.1.2", + "esprima": "3.1.3", "estraverse": "4.2.0", "inversify": "^3.0.0-rc.2", "lodash": "^4.17.2", @@ -47,7 +47,7 @@ "@types/lodash": "^4.14.44", "@types/mkdirp": "0.3.29", "@types/mocha": "2.2.34", - "@types/node": "6.0.52", + "@types/node": "6.0.53", "@types/sinon": "1.16.33", "@types/string-template": "1.0.2", "awesome-typescript-loader": "3.0.0-beta.17", @@ -61,7 +61,7 @@ "mocha": "3.2.0", "sinon": "2.0.0-pre.4", "ts-node": "1.7.2", - "tslint": "4.1.1", + "tslint": "4.2.0", "tslint-loader": "^3.3.0", "typescript": "2.1.4", "webpack": "2.2.0-rc.2", diff --git a/src/Obfuscator.ts b/src/Obfuscator.ts index e77953dd..354c14da 100644 --- a/src/Obfuscator.ts +++ b/src/Obfuscator.ts @@ -109,7 +109,7 @@ export class Obfuscator implements IObfuscator { return astTree; } - NodeUtils.parentize(astTree); + astTree = NodeUtils.parentize(astTree); const stackTraceData: IStackTraceData[] = this.stackTraceAnalyzer.analyze(astTree.body); @@ -129,7 +129,7 @@ export class Obfuscator implements IObfuscator { // first pass: control flow flattening if (this.options.controlFlowFlattening) { - this.transformAstTree( + astTree = this.transformAstTree( astTree, VisitorDirection.leave, this.nodeTransformersFactory(Obfuscator.nodeControlFlowTransformersMap) @@ -137,11 +137,13 @@ export class Obfuscator implements IObfuscator { } // second pass: nodes obfuscation - this.transformAstTree( + console.time(); + astTree = this.transformAstTree( astTree, VisitorDirection.enter, this.nodeTransformersFactory(Obfuscator.nodeObfuscatorsMap) ); + console.timeEnd(); this.obfuscationEventEmitter.emit(ObfuscationEvents.AfterObfuscation, astTree, stackTraceData); @@ -157,15 +159,19 @@ export class Obfuscator implements IObfuscator { astTree: ESTree.Program, direction: TVisitorDirection, nodeTransformersConcreteFactory: (nodeType: string) => INodeTransformer[] - ): void { - estraverse.traverse(astTree, { - [direction]: (node: ESTree.Node, parentNode: ESTree.Node): void => { + ): ESTree.Program { + estraverse.replace(astTree, { + [direction]: (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node => { const nodeTransformers: INodeTransformer[] = nodeTransformersConcreteFactory(node.type); nodeTransformers.forEach((nodeTransformer: INodeTransformer) => { - nodeTransformer.transformNode(node, parentNode); + node = nodeTransformer.transformNode(node, parentNode); }); + + return node; } }); + + return astTree; } } diff --git a/src/custom-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts b/src/custom-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts index 92f7076a..dc5f1658 100644 --- a/src/custom-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts +++ b/src/custom-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts @@ -43,7 +43,7 @@ export class ControlFlowStorageNode extends AbstractCustomNode { * @returns {TStatement[]} */ protected getNodeStructure (): TStatement[] { - const structure: ESTree.Node = Nodes.getVariableDeclarationNode([ + let structure: ESTree.Node = Nodes.getVariableDeclarationNode([ Nodes.getVariableDeclaratorNode( Nodes.getIdentifierNode(this.controlFlowStorage.getStorageId()), Nodes.getObjectExpressionNode( @@ -59,7 +59,7 @@ export class ControlFlowStorageNode extends AbstractCustomNode { ) ]); - NodeUtils.parentize(structure); + structure = NodeUtils.parentize(structure); return [structure]; } diff --git a/src/interfaces/node-transformers/INodeTransformer.d.ts b/src/interfaces/node-transformers/INodeTransformer.d.ts index b955e76d..0aeca52e 100644 --- a/src/interfaces/node-transformers/INodeTransformer.d.ts +++ b/src/interfaces/node-transformers/INodeTransformer.d.ts @@ -4,6 +4,7 @@ export interface INodeTransformer { /** * @param node * @param parentNode + * @returns {ESTree.Node} */ - transformNode (node: ESTree.Node, parentNode?: ESTree.Node): void; + transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node; } diff --git a/src/node-transformers/AbstractNodeTransformer.ts b/src/node-transformers/AbstractNodeTransformer.ts index 2a6a3c85..7724b087 100644 --- a/src/node-transformers/AbstractNodeTransformer.ts +++ b/src/node-transformers/AbstractNodeTransformer.ts @@ -32,6 +32,7 @@ export abstract class AbstractNodeTransformer implements INodeTransformer { /** * @param node * @param parentNode + * @returns {ESTree.Node} */ - public abstract transformNode (node: ESTree.Node, parentNode?: ESTree.Node): void; + public abstract transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node; } diff --git a/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts b/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts index e03ac993..e6487780 100644 --- a/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts +++ b/src/node-transformers/node-control-flow-transformers/FunctionControlFlowTransformer.ts @@ -113,9 +113,12 @@ export class FunctionControlFlowTransformer extends AbstractNodeTransformer { /** * @param functionNode + * @returns {ESTree.Node} */ - public transformNode (functionNode: ESTree.Function): void { + public transformNode (functionNode: ESTree.Function): ESTree.Node { this.changeFunctionBodyControlFlow(functionNode); + + return functionNode; } /** diff --git a/src/node-transformers/node-obfuscators/CatchClauseObfuscator.ts b/src/node-transformers/node-obfuscators/CatchClauseObfuscator.ts index 40047048..8e927084 100644 --- a/src/node-transformers/node-obfuscators/CatchClauseObfuscator.ts +++ b/src/node-transformers/node-obfuscators/CatchClauseObfuscator.ts @@ -45,12 +45,15 @@ export class CatchClauseObfuscator extends AbstractNodeTransformer { /** * @param catchClauseNode + * @returns {ESTree.Node} */ - public transformNode (catchClauseNode: ESTree.CatchClause): void { + public transformNode (catchClauseNode: ESTree.CatchClause): ESTree.Node { const nodeIdentifier: number = this.nodeIdentifier++; this.storeCatchClauseParam(catchClauseNode, nodeIdentifier); this.replaceCatchClauseParam(catchClauseNode, nodeIdentifier); + + return catchClauseNode; } /** diff --git a/src/node-transformers/node-obfuscators/FunctionDeclarationObfuscator.ts b/src/node-transformers/node-obfuscators/FunctionDeclarationObfuscator.ts index 3064c6c7..9e5b34e2 100644 --- a/src/node-transformers/node-obfuscators/FunctionDeclarationObfuscator.ts +++ b/src/node-transformers/node-obfuscators/FunctionDeclarationObfuscator.ts @@ -54,18 +54,21 @@ export class FunctionDeclarationObfuscator extends AbstractNodeTransformer { /** * @param functionDeclarationNode * @param parentNode + * @returns {ESTree.Node} */ - public transformNode (functionDeclarationNode: ESTree.FunctionDeclaration, parentNode: ESTree.Node): void { + public transformNode (functionDeclarationNode: ESTree.FunctionDeclaration, parentNode: ESTree.Node): ESTree.Node { const nodeIdentifier: number = this.nodeIdentifier++; const blockScopeOfFunctionDeclarationNode: TNodeWithBlockStatement = NodeUtils .getBlockScopesOfNode(functionDeclarationNode)[0]; if (blockScopeOfFunctionDeclarationNode.type === NodeType.Program) { - return; + return functionDeclarationNode; } this.storeFunctionName(functionDeclarationNode, nodeIdentifier); this.replaceFunctionName(blockScopeOfFunctionDeclarationNode, nodeIdentifier); + + return functionDeclarationNode; } /** diff --git a/src/node-transformers/node-obfuscators/FunctionObfuscator.ts b/src/node-transformers/node-obfuscators/FunctionObfuscator.ts index a695b397..af637106 100644 --- a/src/node-transformers/node-obfuscators/FunctionObfuscator.ts +++ b/src/node-transformers/node-obfuscators/FunctionObfuscator.ts @@ -45,12 +45,15 @@ export class FunctionObfuscator extends AbstractNodeTransformer { /** * @param functionNode + * @returns {ESTree.Node} */ - public transformNode (functionNode: ESTree.Function): void { + public transformNode (functionNode: ESTree.Function): ESTree.Node { const nodeIdentifier: number = this.nodeIdentifier++; this.storeFunctionParams(functionNode, nodeIdentifier); this.replaceFunctionParams(functionNode, nodeIdentifier); + + return functionNode; } /** diff --git a/src/node-transformers/node-obfuscators/LabeledStatementObfuscator.ts b/src/node-transformers/node-obfuscators/LabeledStatementObfuscator.ts index f11b5c2e..7da882e4 100644 --- a/src/node-transformers/node-obfuscators/LabeledStatementObfuscator.ts +++ b/src/node-transformers/node-obfuscators/LabeledStatementObfuscator.ts @@ -53,12 +53,15 @@ export class LabeledStatementObfuscator extends AbstractNodeTransformer { /** * @param labeledStatementNode + * @returns {ESTree.Node} */ - public transformNode (labeledStatementNode: ESTree.LabeledStatement): void { + public transformNode (labeledStatementNode: ESTree.LabeledStatement): ESTree.Node { const nodeIdentifier: number = this.nodeIdentifier++; this.storeLabeledStatementName(labeledStatementNode, nodeIdentifier); this.replaceLabeledStatementName(labeledStatementNode, nodeIdentifier); + + return labeledStatementNode; } /** diff --git a/src/node-transformers/node-obfuscators/LiteralObfuscator.ts b/src/node-transformers/node-obfuscators/LiteralObfuscator.ts index 6b8837ac..e00a87fc 100644 --- a/src/node-transformers/node-obfuscators/LiteralObfuscator.ts +++ b/src/node-transformers/node-obfuscators/LiteralObfuscator.ts @@ -35,10 +35,11 @@ export class LiteralObfuscator extends AbstractNodeTransformer { /** * @param literalNode * @param parentNode + * @returns {ESTree.Node} */ - public transformNode (literalNode: ESTree.Literal, parentNode: ESTree.Node): void { + public transformNode (literalNode: ESTree.Literal, parentNode: ESTree.Node): ESTree.Node { if (Node.isPropertyNode(parentNode) && parentNode.key === literalNode) { - return; + return literalNode; } let content: string; @@ -63,12 +64,14 @@ export class LiteralObfuscator extends AbstractNodeTransformer { break; default: - return; + return literalNode; } literalNode['x-verbatim-property'] = { content : content, precedence: escodegen.Precedence.Primary }; + + return literalNode; } } diff --git a/src/node-transformers/node-obfuscators/MemberExpressionObfuscator.ts b/src/node-transformers/node-obfuscators/MemberExpressionObfuscator.ts index bb26773b..161bc990 100644 --- a/src/node-transformers/node-obfuscators/MemberExpressionObfuscator.ts +++ b/src/node-transformers/node-obfuscators/MemberExpressionObfuscator.ts @@ -35,20 +35,23 @@ export class MemberExpressionObfuscator extends AbstractNodeTransformer { /** * @param memberExpressionNode + * @returns {ESTree.Node} */ - public transformNode (memberExpressionNode: ESTree.MemberExpression): void { + public transformNode (memberExpressionNode: ESTree.MemberExpression): ESTree.Node { if (Node.isLiteralNode(memberExpressionNode.property)) { memberExpressionNode.property = this.obfuscateLiteralProperty(memberExpressionNode.property); } if (Node.isIdentifierNode(memberExpressionNode.property)) { if (memberExpressionNode.computed) { - return; + return memberExpressionNode; } memberExpressionNode.computed = true; memberExpressionNode.property = this.obfuscateIdentifierProperty(memberExpressionNode.property); } + + return memberExpressionNode; } /** diff --git a/src/node-transformers/node-obfuscators/MethodDefinitionObfuscator.ts b/src/node-transformers/node-obfuscators/MethodDefinitionObfuscator.ts index 3e40795a..811a5956 100644 --- a/src/node-transformers/node-obfuscators/MethodDefinitionObfuscator.ts +++ b/src/node-transformers/node-obfuscators/MethodDefinitionObfuscator.ts @@ -47,9 +47,12 @@ export class MethodDefinitionObfuscator extends AbstractNodeTransformer { /** * @param methodDefinitionNode * @param parentNode + * @returns {ESTree.Node} */ - public transformNode (methodDefinitionNode: ESTree.MethodDefinition, parentNode: ESTree.Node): void { + public transformNode (methodDefinitionNode: ESTree.MethodDefinition, parentNode: ESTree.Node): ESTree.Node { this.replaceMethodName(methodDefinitionNode); + + return methodDefinitionNode; } /** diff --git a/src/node-transformers/node-obfuscators/ObjectExpressionObfuscator.ts b/src/node-transformers/node-obfuscators/ObjectExpressionObfuscator.ts index ecaee8e5..bfa4bb58 100644 --- a/src/node-transformers/node-obfuscators/ObjectExpressionObfuscator.ts +++ b/src/node-transformers/node-obfuscators/ObjectExpressionObfuscator.ts @@ -67,8 +67,9 @@ export class ObjectExpressionObfuscator extends AbstractNodeTransformer { /** * @param objectExpressionNode + * @returns {ESTree.Node} */ - public transformNode (objectExpressionNode: ESTree.ObjectExpression): void { + public transformNode (objectExpressionNode: ESTree.ObjectExpression): ESTree.Node { objectExpressionNode.properties .forEach((property: ESTree.Property) => { if (property.shorthand) { @@ -87,5 +88,7 @@ export class ObjectExpressionObfuscator extends AbstractNodeTransformer { } }); }); + + return objectExpressionNode; } } diff --git a/src/node-transformers/node-obfuscators/VariableDeclarationObfuscator.ts b/src/node-transformers/node-obfuscators/VariableDeclarationObfuscator.ts index bb58c87a..d217593b 100644 --- a/src/node-transformers/node-obfuscators/VariableDeclarationObfuscator.ts +++ b/src/node-transformers/node-obfuscators/VariableDeclarationObfuscator.ts @@ -55,13 +55,14 @@ export class VariableDeclarationObfuscator extends AbstractNodeTransformer { /** * @param variableDeclarationNode * @param parentNode + * @returns {ESTree.Node} */ - public transformNode (variableDeclarationNode: ESTree.VariableDeclaration, parentNode: ESTree.Node): void { + public transformNode (variableDeclarationNode: ESTree.VariableDeclaration, parentNode: ESTree.Node): ESTree.Node { const blockScopeOfVariableDeclarationNode: TNodeWithBlockStatement = NodeUtils .getBlockScopesOfNode(variableDeclarationNode)[0]; if (blockScopeOfVariableDeclarationNode.type === NodeType.Program) { - return; + return variableDeclarationNode; } const nodeIdentifier: number = this.nodeIdentifier++; @@ -71,6 +72,8 @@ export class VariableDeclarationObfuscator extends AbstractNodeTransformer { this.storeVariableNames(variableDeclarationNode, nodeIdentifier); this.replaceVariableNames(scopeNode, nodeIdentifier); + + return variableDeclarationNode; } /** diff --git a/src/node/NodeUtils.ts b/src/node/NodeUtils.ts index bb800151..b63ebe5e 100644 --- a/src/node/NodeUtils.ts +++ b/src/node/NodeUtils.ts @@ -24,8 +24,9 @@ export class NodeUtils { /** * @param node + * @return {T} */ - public static addXVerbatimPropertyToLiterals (node: ESTree.Node): void { + public static addXVerbatimPropertyToLiterals (node: T): T { NodeUtils.typedReplace(node, NodeType.Literal, { leave: (node: ESTree.Literal) => { node['x-verbatim-property'] = { @@ -34,6 +35,8 @@ export class NodeUtils { }; } }); + + return node; } /** @@ -41,10 +44,10 @@ export class NodeUtils { * @returns {TStatement[]} */ public static convertCodeToStructure (code: string): TStatement[] { - const structure: ESTree.Program = esprima.parse(code); + let structure: ESTree.Program = esprima.parse(code); - NodeUtils.addXVerbatimPropertyToLiterals(structure); - NodeUtils.parentize(structure); + structure = NodeUtils.addXVerbatimPropertyToLiterals(structure); + structure = NodeUtils.parentize(structure); return structure.body; } @@ -142,8 +145,9 @@ export class NodeUtils { /** * @param node + * @return {T} */ - public static parentize (node: ESTree.Node): void { + public static parentize (node: T): T { let isRootNode: boolean = true; estraverse.replace(node, { @@ -167,6 +171,8 @@ export class NodeUtils { node.obfuscated = false; } }); + + return node; } /** diff --git a/src/utils/Utils.ts b/src/utils/Utils.ts index 87a10fdb..e193a42f 100644 --- a/src/utils/Utils.ts +++ b/src/utils/Utils.ts @@ -159,7 +159,7 @@ export class Utils { prefix = '\\u'; template = '0'.repeat(4); } - + return `${prefix}${(template + escape.charCodeAt(0).toString(radix)).slice(-template.length)}`; }); diff --git a/test/unit-tests/node/NodeAppender.spec.ts b/test/unit-tests/node/NodeAppender.spec.ts index 9808db54..5f2946e3 100644 --- a/test/unit-tests/node/NodeAppender.spec.ts +++ b/test/unit-tests/node/NodeAppender.spec.ts @@ -40,8 +40,8 @@ describe('NodeAppender', () => { ) ); - NodeUtils.parentize(astTree); - NodeUtils.parentize(expectedAstTree); + astTree = NodeUtils.parentize(astTree); + expectedAstTree = NodeUtils.parentize(expectedAstTree); NodeAppender.appendNode(astTree, node); }); @@ -205,8 +205,8 @@ describe('NodeAppender', () => { ) ); - NodeUtils.parentize(astTree); - NodeUtils.parentize(expectedAstTree); + astTree = NodeUtils.parentize(astTree); + expectedAstTree = NodeUtils.parentize(expectedAstTree); NodeAppender.insertNodeAtIndex(astTree, node, 2); }); @@ -238,8 +238,8 @@ describe('NodeAppender', () => { ) ); - NodeUtils.parentize(astTree); - NodeUtils.parentize(expectedAstTree); + astTree = NodeUtils.parentize(astTree); + expectedAstTree = NodeUtils.parentize(expectedAstTree); NodeAppender.prependNode(astTree, node); }); diff --git a/test/unit-tests/node/NodeUtils.spec.ts b/test/unit-tests/node/NodeUtils.spec.ts index ba9ebf45..3d208a96 100644 --- a/test/unit-tests/node/NodeUtils.spec.ts +++ b/test/unit-tests/node/NodeUtils.spec.ts @@ -51,11 +51,11 @@ describe('NodeUtils', () => { variableDeclarationNode ]); - programNode['parentNode'] = programNode; - variableDeclarationNode['parentNode'] = programNode; - variableDeclaratorNode['parentNode'] = variableDeclarationNode; - identifierNode['parentNode'] = variableDeclaratorNode; - literalNode['parentNode'] = variableDeclaratorNode; + programNode.parentNode = programNode; + variableDeclarationNode.parentNode = programNode; + variableDeclaratorNode.parentNode = variableDeclarationNode; + identifierNode.parentNode = variableDeclaratorNode; + literalNode.parentNode = variableDeclaratorNode; }); it('should convert code to `ESTree.Node[]` structure array', () => { @@ -162,15 +162,15 @@ describe('NodeUtils', () => { functionDeclarationNode ]); - programNode['parentNode'] = programNode; - functionDeclarationNode['parentNode'] = programNode; - functionDeclarationBlockStatementNode['parentNode'] = functionDeclarationNode; - expressionStatementNode1['parentNode'] = functionDeclarationBlockStatementNode; - ifStatementNode1['parentNode'] = functionDeclarationBlockStatementNode; - ifStatementBlockStatementNode1['parentNode'] = ifStatementNode1; - ifStatementNode2['parentNode'] = ifStatementBlockStatementNode1; - ifStatementBlockStatementNode2['parentNode'] = ifStatementNode2; - expressionStatementNode3['parentNode'] = ifStatementBlockStatementNode2; + programNode.parentNode = programNode; + functionDeclarationNode.parentNode = programNode; + functionDeclarationBlockStatementNode.parentNode = functionDeclarationNode; + expressionStatementNode1.parentNode = functionDeclarationBlockStatementNode; + ifStatementNode1.parentNode = functionDeclarationBlockStatementNode; + ifStatementBlockStatementNode1.parentNode = ifStatementNode1; + ifStatementNode2.parentNode = ifStatementBlockStatementNode1; + ifStatementBlockStatementNode2.parentNode = ifStatementNode2; + expressionStatementNode3.parentNode = ifStatementBlockStatementNode2; }); it('should return block-scope node for given node', () => { @@ -249,17 +249,17 @@ describe('NodeUtils', () => { functionDeclarationNode1 ]); - programNode['parentNode'] = programNode; - functionDeclarationNode1['parentNode'] = programNode; - functionDeclarationBlockStatementNode1['parentNode'] = functionDeclarationNode1; - expressionStatementNode1['parentNode'] = functionDeclarationBlockStatementNode1; - ifStatementNode1['parentNode'] = functionDeclarationBlockStatementNode1; - ifStatementBlockStatementNode1['parentNode'] = ifStatementNode1; - functionDeclarationNode2['parentNode'] = ifStatementBlockStatementNode1; - functionDeclarationBlockStatementNode2['parentNode'] = functionDeclarationNode2; - expressionStatementNode2['parentNode'] = functionDeclarationBlockStatementNode2; - ifStatementNode2['parentNode'] = functionDeclarationBlockStatementNode2; - ifStatementBlockStatementNode2['parentNode'] = ifStatementNode2; + programNode.parentNode = programNode; + functionDeclarationNode1.parentNode = programNode; + functionDeclarationBlockStatementNode1.parentNode = functionDeclarationNode1; + expressionStatementNode1.parentNode = functionDeclarationBlockStatementNode1; + ifStatementNode1.parentNode = functionDeclarationBlockStatementNode1; + ifStatementBlockStatementNode1.parentNode = ifStatementNode1; + functionDeclarationNode2.parentNode = ifStatementBlockStatementNode1; + functionDeclarationBlockStatementNode2.parentNode = functionDeclarationNode2; + expressionStatementNode2.parentNode = functionDeclarationBlockStatementNode2; + ifStatementNode2.parentNode = functionDeclarationBlockStatementNode2; + ifStatementBlockStatementNode2.parentNode = ifStatementNode2; }); it('should return block-scope depth for given node', () => { @@ -308,27 +308,27 @@ describe('NodeUtils', () => { ifStatementNode ]); - NodeUtils.parentize(programNode); + programNode = NodeUtils.parentize(programNode); - assert.deepEqual(programNode['parentNode'], programNode); - assert.deepEqual(ifStatementNode['parentNode'], programNode); - assert.deepEqual(ifStatementBlockStatementNode['parentNode'], ifStatementNode); - assert.deepEqual(expressionStatementNode1['parentNode'], ifStatementBlockStatementNode); - assert.deepEqual(expressionStatementNode2['parentNode'], ifStatementBlockStatementNode); + assert.deepEqual(programNode.parentNode, programNode); + assert.deepEqual(ifStatementNode.parentNode, programNode); + assert.deepEqual(ifStatementBlockStatementNode.parentNode, ifStatementNode); + assert.deepEqual(expressionStatementNode1.parentNode, ifStatementBlockStatementNode); + assert.deepEqual(expressionStatementNode2.parentNode, ifStatementBlockStatementNode); }); it('should parentize given AST-tree', () => { programNode = Nodes.getProgramNode([ ifStatementNode ]); - programNode['parentNode'] = programNode; + programNode.parentNode = programNode; - NodeUtils.parentize(ifStatementNode); + ifStatementNode = NodeUtils.parentize(ifStatementNode); - assert.deepEqual(ifStatementNode['parentNode'], programNode); - assert.deepEqual(ifStatementBlockStatementNode['parentNode'], ifStatementNode); - assert.deepEqual(expressionStatementNode1['parentNode'], ifStatementBlockStatementNode); - assert.deepEqual(expressionStatementNode2['parentNode'], ifStatementBlockStatementNode); + assert.deepEqual(ifStatementNode.parentNode, programNode); + assert.deepEqual(ifStatementBlockStatementNode.parentNode, ifStatementNode); + assert.deepEqual(expressionStatementNode1.parentNode, ifStatementBlockStatementNode); + assert.deepEqual(expressionStatementNode2.parentNode, ifStatementBlockStatementNode); }); }); }); diff --git a/tslint.json b/tslint.json index 6fc0dca3..57311362 100644 --- a/tslint.json +++ b/tslint.json @@ -57,6 +57,7 @@ "no-default-export": true, "no-duplicate-variable": true, "no-empty": false, + "no-empty-interface": true, "no-eval": false, "no-inferrable-types": false, "no-internal-module": true, @@ -67,8 +68,9 @@ "no-require-imports": false, "no-shadowed-variable": false, "no-string-literal": true, + "no-string-throw": true, "no-switch-case-fall-through": false, - "no-trailing-whitespace": true, + "no-trailing-whitespace": false, "no-unused-expression": true, "no-use-before-declare": true, "no-var-keyword": true,