From d614915575a304123bda4438f9fe56e5cc019ca0 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sun, 8 Jan 2017 13:36:26 +0300 Subject: [PATCH 01/11] slightly stronger tslint rules --- dist/index.js | 431 +++++++++--------- package.json | 14 +- .../CatchClauseTransformer.ts | 2 +- .../FunctionDeclarationTransformer.ts | 2 +- .../FunctionTransformer.ts | 2 +- .../LabeledStatementTransformer.ts | 2 +- .../LiteralTransformer.ts | 2 +- .../MemberExpressionTransformer.ts | 2 +- .../MethodDefinitionTransformer.ts | 2 +- .../ObjectExpressionTransformer.ts | 2 +- .../TemplateLiteralTransformer.ts | 2 +- .../VariableDeclarationTransformer.ts | 2 +- src/node/NodeUtils.ts | 34 +- .../FunctionDeclarationCalleeDataExtractor.ts | 6 +- .../FunctionExpressionCalleeDataExtractor.ts | 6 +- .../ObjectExpressionCalleeDataExtractor.ts | 6 +- src/utils/CryptUtils.ts | 2 +- tslint.json | 6 +- 18 files changed, 264 insertions(+), 261 deletions(-) diff --git a/dist/index.js b/dist/index.js index 503c949c..2f01500b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -90,7 +90,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 151); +/******/ return __webpack_require__(__webpack_require__.s = 150); /******/ }) /************************************************************************/ /******/ ([ @@ -124,7 +124,7 @@ module.exports = require("tslib"); "use strict"; -var _symbol = __webpack_require__(140); +var _symbol = __webpack_require__(139); var _symbol2 = _interopRequireDefault(_symbol); @@ -197,7 +197,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var escodegen = __webpack_require__(28); -var esprima = __webpack_require__(50); +var esprima = __webpack_require__(49); var estraverse = __webpack_require__(18); var NodeType_1 = __webpack_require__(15); var Node_1 = __webpack_require__(12); @@ -209,16 +209,16 @@ var NodeUtils = function () { (0, _createClass3.default)(NodeUtils, null, [{ key: "addXVerbatimPropertyToLiterals", - value: function addXVerbatimPropertyToLiterals(node) { - NodeUtils.typedReplace(node, NodeType_1.NodeType.Literal, { - leave: function leave(node) { - node['x-verbatim-property'] = { - content: node.raw, + value: function addXVerbatimPropertyToLiterals(astTree) { + NodeUtils.typedReplace(astTree, NodeType_1.NodeType.Literal, { + leave: function leave(literalNode) { + literalNode['x-verbatim-property'] = { + content: literalNode.raw, precedence: escodegen.Precedence.Primary }; } }); - return node; + return astTree; } }, { key: "convertCodeToStructure", @@ -324,9 +324,9 @@ var NodeUtils = function () { } }, { key: "parentize", - value: function parentize(node) { + value: function parentize(astTree) { var isRootNode = true; - estraverse.traverse(node, { + estraverse.traverse(astTree, { enter: function enter(node, parentNode) { var value = void 0; if (isRootNode) { @@ -344,19 +344,19 @@ var NodeUtils = function () { node.obfuscated = false; } }); - return node; + return astTree; } }, { key: "typedReplace", - value: function typedReplace(node, nodeType, visitor) { - NodeUtils.typedTraverse(node, nodeType, visitor, 'replace'); + value: function typedReplace(astTree, nodeType, visitor) { + NodeUtils.typedTraverse(astTree, nodeType, visitor, 'replace'); } }, { key: "typedTraverse", - value: function typedTraverse(node, nodeType, visitor) { + value: function typedTraverse(astTree, nodeType, visitor) { var traverseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'traverse'; - estraverse[traverseType](node, { + estraverse[traverseType](astTree, { enter: function enter(node, parentNode) { if (node.type === nodeType && visitor.enter) { return visitor.enter(node, parentNode); @@ -383,7 +383,7 @@ exports.NodeUtils = NodeUtils; "use strict"; -var _set = __webpack_require__(139); +var _set = __webpack_require__(138); var _set2 = _interopRequireDefault(_set); @@ -397,7 +397,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var chance_1 = __webpack_require__(49); +var chance_1 = __webpack_require__(142); var Utils_1 = __webpack_require__(14); var RandomGeneratorUtils = function () { @@ -481,11 +481,11 @@ exports.RandomGeneratorUtils = RandomGeneratorUtils; "use strict"; -var _defineProperty = __webpack_require__(137); +var _defineProperty = __webpack_require__(136); var _defineProperty2 = _interopRequireDefault(_defineProperty); -var _getOwnPropertyDescriptor = __webpack_require__(138); +var _getOwnPropertyDescriptor = __webpack_require__(137); var _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor); @@ -1434,11 +1434,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de __webpack_require__(149); if (!global._babelPolyfill && parseInt(process.version.split('.')[0], 10) < 4) { - __webpack_require__(135); + __webpack_require__(134); } var ServiceIdentifiers_1 = __webpack_require__(4); -var InversifyContainerFacade_1 = __webpack_require__(58); -var JavaScriptObfuscatorCLI_1 = __webpack_require__(57); +var InversifyContainerFacade_1 = __webpack_require__(57); +var JavaScriptObfuscatorCLI_1 = __webpack_require__(56); var RandomGeneratorUtils_1 = __webpack_require__(9); var JavaScriptObfuscator = function () { @@ -2315,22 +2315,16 @@ module.exports = require("babel-runtime/helpers/get"); /* 49 */ /***/ function(module, exports) { -module.exports = require("chance"); +module.exports = require("esprima"); /***/ }, /* 50 */ /***/ function(module, exports) { -module.exports = require("esprima"); - -/***/ }, -/* 51 */ -/***/ function(module, exports) { - module.exports = require("path"); /***/ }, -/* 52 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2349,7 +2343,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__(50); +var esprima = __webpack_require__(49); var escodegen = __webpack_require__(28); var JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal_1 = function () { function JavaScriptObfuscatorInternal(obfuscator, sourceMapCorrector, options) { @@ -2400,7 +2394,7 @@ exports.JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal; var JavaScriptObfuscatorInternal_1; /***/ }, -/* 53 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2454,7 +2448,7 @@ ObfuscationResult = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__meta exports.ObfuscationResult = ObfuscationResult; /***/ }, -/* 54 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2464,7 +2458,7 @@ var _map = __webpack_require__(11); var _map2 = _interopRequireDefault(_map); -var _defineProperty2 = __webpack_require__(141); +var _defineProperty2 = __webpack_require__(140); var _defineProperty3 = _interopRequireDefault(_defineProperty2); @@ -2485,7 +2479,7 @@ var estraverse = __webpack_require__(18); var NodeTransformers_1 = __webpack_require__(40); var NodeType_1 = __webpack_require__(15); var ObfuscationEvents_1 = __webpack_require__(23); -var VisitorDirection_1 = __webpack_require__(87); +var VisitorDirection_1 = __webpack_require__(86); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); var Obfuscator = Obfuscator_1 = function () { @@ -2543,7 +2537,7 @@ exports.Obfuscator = Obfuscator; var Obfuscator_1; /***/ }, -/* 55 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2606,7 +2600,7 @@ SourceMapCorrector = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__par exports.SourceMapCorrector = SourceMapCorrector; /***/ }, -/* 56 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2624,7 +2618,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var fs = __webpack_require__(146); var mkdirp = __webpack_require__(148); -var path = __webpack_require__(51); +var path = __webpack_require__(50); var CLIUtils = function () { function CLIUtils() { @@ -2702,7 +2696,7 @@ CLIUtils.encoding = 'utf8'; exports.CLIUtils = CLIUtils; /***/ }, -/* 57 */ +/* 56 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2724,11 +2718,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var commander = __webpack_require__(144); -var path = __webpack_require__(51); +var path = __webpack_require__(50); var SourceMapMode_1 = __webpack_require__(29); var StringArrayEncoding_1 = __webpack_require__(32); var Default_1 = __webpack_require__(43); -var CLIUtils_1 = __webpack_require__(56); +var CLIUtils_1 = __webpack_require__(55); var JavaScriptObfuscator_1 = __webpack_require__(24); var JavaScriptObfuscatorCLI = function () { @@ -2859,7 +2853,7 @@ var JavaScriptObfuscatorCLI = function () { exports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLI; /***/ }, -/* 58 */ +/* 57 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2877,18 +2871,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var ControlFlowTransformersModule_1 = __webpack_require__(60); -var CustomNodesModule_1 = __webpack_require__(59); -var ObfuscationTransformersModule_1 = __webpack_require__(62); -var NodeTransformersModule_1 = __webpack_require__(61); -var StackTraceAnalyzerModule_1 = __webpack_require__(63); -var StoragesModule_1 = __webpack_require__(64); -var JavaScriptObfuscatorInternal_1 = __webpack_require__(52); -var ObfuscationEventEmitter_1 = __webpack_require__(88); -var ObfuscationResult_1 = __webpack_require__(53); -var Obfuscator_1 = __webpack_require__(54); -var Options_1 = __webpack_require__(108); -var SourceMapCorrector_1 = __webpack_require__(55); +var ControlFlowTransformersModule_1 = __webpack_require__(59); +var CustomNodesModule_1 = __webpack_require__(58); +var ObfuscationTransformersModule_1 = __webpack_require__(61); +var NodeTransformersModule_1 = __webpack_require__(60); +var StackTraceAnalyzerModule_1 = __webpack_require__(62); +var StoragesModule_1 = __webpack_require__(63); +var JavaScriptObfuscatorInternal_1 = __webpack_require__(51); +var ObfuscationEventEmitter_1 = __webpack_require__(87); +var ObfuscationResult_1 = __webpack_require__(52); +var Obfuscator_1 = __webpack_require__(53); +var Options_1 = __webpack_require__(107); +var SourceMapCorrector_1 = __webpack_require__(54); var InversifyContainerFacade = function () { function InversifyContainerFacade(options) { @@ -2935,7 +2929,7 @@ var InversifyContainerFacade = function () { exports.InversifyContainerFacade = InversifyContainerFacade; /***/ }, -/* 59 */ +/* 58 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -2951,28 +2945,28 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var CustomNodes_1 = __webpack_require__(16); var CustomNodeGroups_1 = __webpack_require__(38); -var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(66); -var DebugProtectionCustomNodeGroup_1 = __webpack_require__(77); -var DomainLockCustomNodeGroup_1 = __webpack_require__(79); -var SelfDefendingCustomNodeGroup_1 = __webpack_require__(82); -var StringArrayCustomNodeGroup_1 = __webpack_require__(86); -var BinaryExpressionFunctionNode_1 = __webpack_require__(67); -var BlockStatementControlFlowFlatteningNode_1 = __webpack_require__(68); -var CallExpressionControlFlowStorageCallNode_1 = __webpack_require__(71); -var CallExpressionFunctionNode_1 = __webpack_require__(69); -var ControlFlowStorageNode_1 = __webpack_require__(72); -var ConsoleOutputDisableExpressionNode_1 = __webpack_require__(65); -var DebugProtectionFunctionCallNode_1 = __webpack_require__(74); -var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(75); -var DebugProtectionFunctionNode_1 = __webpack_require__(76); -var DomainLockNode_1 = __webpack_require__(78); -var ExpressionWithOperatorControlFlowStorageCallNode_1 = __webpack_require__(73); -var LogicalExpressionFunctionNode_1 = __webpack_require__(70); -var NodeCallsControllerFunctionNode_1 = __webpack_require__(80); -var SelfDefendingUnicodeNode_1 = __webpack_require__(81); -var StringArrayCallsWrapper_1 = __webpack_require__(83); -var StringArrayNode_1 = __webpack_require__(84); -var StringArrayRotateFunctionNode_1 = __webpack_require__(85); +var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(65); +var DebugProtectionCustomNodeGroup_1 = __webpack_require__(76); +var DomainLockCustomNodeGroup_1 = __webpack_require__(78); +var SelfDefendingCustomNodeGroup_1 = __webpack_require__(81); +var StringArrayCustomNodeGroup_1 = __webpack_require__(85); +var BinaryExpressionFunctionNode_1 = __webpack_require__(66); +var BlockStatementControlFlowFlatteningNode_1 = __webpack_require__(67); +var CallExpressionControlFlowStorageCallNode_1 = __webpack_require__(70); +var CallExpressionFunctionNode_1 = __webpack_require__(68); +var ControlFlowStorageNode_1 = __webpack_require__(71); +var ConsoleOutputDisableExpressionNode_1 = __webpack_require__(64); +var DebugProtectionFunctionCallNode_1 = __webpack_require__(73); +var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(74); +var DebugProtectionFunctionNode_1 = __webpack_require__(75); +var DomainLockNode_1 = __webpack_require__(77); +var ExpressionWithOperatorControlFlowStorageCallNode_1 = __webpack_require__(72); +var LogicalExpressionFunctionNode_1 = __webpack_require__(69); +var NodeCallsControllerFunctionNode_1 = __webpack_require__(79); +var SelfDefendingUnicodeNode_1 = __webpack_require__(80); +var StringArrayCallsWrapper_1 = __webpack_require__(82); +var StringArrayNode_1 = __webpack_require__(83); +var StringArrayRotateFunctionNode_1 = __webpack_require__(84); 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(BlockStatementControlFlowFlatteningNode_1.BlockStatementControlFlowFlatteningNode).whenTargetNamed(CustomNodes_1.CustomNodes.BlockStatementControlFlowFlatteningNode); @@ -3019,7 +3013,7 @@ exports.customNodesModule = new inversify_1.ContainerModule(function (bind) { }); /***/ }, -/* 60 */ +/* 59 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3034,9 +3028,9 @@ 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__(91); -var CallExpressionControlFlowReplacer_1 = __webpack_require__(92); -var LogicalExpressionControlFlowReplacer_1 = __webpack_require__(93); +var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(90); +var CallExpressionControlFlowReplacer_1 = __webpack_require__(91); +var LogicalExpressionControlFlowReplacer_1 = __webpack_require__(92); exports.controlFlowTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer).whenTargetNamed(NodeControlFlowReplacers_1.NodeControlFlowReplacers.BinaryExpressionControlFlowReplacer); bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(CallExpressionControlFlowReplacer_1.CallExpressionControlFlowReplacer).whenTargetNamed(NodeControlFlowReplacers_1.NodeControlFlowReplacers.CallExpressionControlFlowReplacer); @@ -3055,7 +3049,7 @@ exports.controlFlowTransformersModule = new inversify_1.ContainerModule(function }); /***/ }, -/* 61 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3070,18 +3064,18 @@ 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__(90); -var BlockStatementControlFlowTransformer_1 = __webpack_require__(89); -var CatchClauseTransformer_1 = __webpack_require__(94); -var FunctionDeclarationTransformer_1 = __webpack_require__(95); -var FunctionTransformer_1 = __webpack_require__(96); -var LabeledStatementTransformer_1 = __webpack_require__(97); -var LiteralTransformer_1 = __webpack_require__(98); -var MemberExpressionTransformer_1 = __webpack_require__(99); -var MethodDefinitionTransformer_1 = __webpack_require__(100); -var ObjectExpressionTransformer_1 = __webpack_require__(101); -var TemplateLiteralTransformer_1 = __webpack_require__(102); -var VariableDeclarationTransformer_1 = __webpack_require__(103); +var FunctionControlFlowTransformer_1 = __webpack_require__(89); +var BlockStatementControlFlowTransformer_1 = __webpack_require__(88); +var CatchClauseTransformer_1 = __webpack_require__(93); +var FunctionDeclarationTransformer_1 = __webpack_require__(94); +var FunctionTransformer_1 = __webpack_require__(95); +var LabeledStatementTransformer_1 = __webpack_require__(96); +var LiteralTransformer_1 = __webpack_require__(97); +var MemberExpressionTransformer_1 = __webpack_require__(98); +var MethodDefinitionTransformer_1 = __webpack_require__(99); +var ObjectExpressionTransformer_1 = __webpack_require__(100); +var TemplateLiteralTransformer_1 = __webpack_require__(101); +var VariableDeclarationTransformer_1 = __webpack_require__(102); exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(BlockStatementControlFlowTransformer_1.BlockStatementControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.BlockStatementControlFlowTransformer); bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer); @@ -3118,7 +3112,7 @@ exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) }); /***/ }, -/* 62 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3133,10 +3127,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var BooleanLiteralReplacer_1 = __webpack_require__(104); -var IdentifierReplacer_1 = __webpack_require__(105); -var NumberLiteralReplacer_1 = __webpack_require__(106); -var StringLiteralReplacer_1 = __webpack_require__(107); +var BooleanLiteralReplacer_1 = __webpack_require__(103); +var IdentifierReplacer_1 = __webpack_require__(104); +var NumberLiteralReplacer_1 = __webpack_require__(105); +var StringLiteralReplacer_1 = __webpack_require__(106); exports.obfuscationTransformersModule = new inversify_1.ContainerModule(function (bind) { bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(BooleanLiteralReplacer_1.BooleanLiteralReplacer).whenTargetNamed(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.BooleanReplacer); bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatorReplacer).to(IdentifierReplacer_1.IdentifierReplacer).whenTargetNamed(NodeObfuscationReplacers_1.NodeObfuscatorsReplacers.IdentifierReplacer); @@ -3156,7 +3150,7 @@ exports.obfuscationTransformersModule = new inversify_1.ContainerModule(function }); /***/ }, -/* 63 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3171,10 +3165,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__(112); -var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(113); -var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(114); -var StackTraceAnalyzer_1 = __webpack_require__(111); +var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(111); +var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(112); +var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(113); +var StackTraceAnalyzer_1 = __webpack_require__(110); 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); @@ -3194,7 +3188,7 @@ exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bin }); /***/ }, -/* 64 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3202,9 +3196,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__(116); -var CustomNodeGroupStorage_1 = __webpack_require__(117); -var StringArrayStorage_1 = __webpack_require__(118); +var ControlFlowStorage_1 = __webpack_require__(115); +var CustomNodeGroupStorage_1 = __webpack_require__(116); +var StringArrayStorage_1 = __webpack_require__(117); 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(); @@ -3218,7 +3212,7 @@ exports.storagesModule = new inversify_1.ContainerModule(function (bind) { }); /***/ }, -/* 65 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3250,7 +3244,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); -var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(122); +var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(121); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); var NodeUtils_1 = __webpack_require__(8); @@ -3289,7 +3283,7 @@ ConsoleOutputDisableExpressionNode = tslib_1.__decorate([inversify_1.injectable( exports.ConsoleOutputDisableExpressionNode = ConsoleOutputDisableExpressionNode; /***/ }, -/* 66 */ +/* 65 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3384,7 +3378,7 @@ ConsoleOutputCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tsl exports.ConsoleOutputCustomNodeGroup = ConsoleOutputCustomNodeGroup; /***/ }, -/* 67 */ +/* 66 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3448,7 +3442,7 @@ BinaryExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tsl exports.BinaryExpressionFunctionNode = BinaryExpressionFunctionNode; /***/ }, -/* 68 */ +/* 67 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3522,7 +3516,7 @@ BlockStatementControlFlowFlatteningNode = tslib_1.__decorate([inversify_1.inject exports.BlockStatementControlFlowFlatteningNode = BlockStatementControlFlowFlatteningNode; /***/ }, -/* 69 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3592,7 +3586,7 @@ CallExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib exports.CallExpressionFunctionNode = CallExpressionFunctionNode; /***/ }, -/* 70 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3656,7 +3650,7 @@ LogicalExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), ts exports.LogicalExpressionFunctionNode = LogicalExpressionFunctionNode; /***/ }, -/* 71 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3729,7 +3723,7 @@ CallExpressionControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injec exports.CallExpressionControlFlowStorageCallNode = CallExpressionControlFlowStorageCallNode; /***/ }, -/* 72 */ +/* 71 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3806,7 +3800,7 @@ ControlFlowStorageNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1._ exports.ControlFlowStorageNode = ControlFlowStorageNode; /***/ }, -/* 73 */ +/* 72 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3875,7 +3869,7 @@ ExpressionWithOperatorControlFlowStorageCallNode = tslib_1.__decorate([inversify exports.ExpressionWithOperatorControlFlowStorageCallNode = ExpressionWithOperatorControlFlowStorageCallNode; /***/ }, -/* 74 */ +/* 73 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3908,7 +3902,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); -var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(123); +var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(122); var AbstractCustomNode_1 = __webpack_require__(13); var NodeUtils_1 = __webpack_require__(8); var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) { @@ -3944,7 +3938,7 @@ DebugProtectionFunctionCallNode = tslib_1.__decorate([inversify_1.injectable(), exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode; /***/ }, -/* 75 */ +/* 74 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -3977,7 +3971,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); -var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(124); +var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(123); var AbstractCustomNode_1 = __webpack_require__(13); var NodeUtils_1 = __webpack_require__(8); var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) { @@ -4013,7 +4007,7 @@ DebugProtectionFunctionIntervalNode = tslib_1.__decorate([inversify_1.injectable exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode; /***/ }, -/* 76 */ +/* 75 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4046,7 +4040,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); -var DebugProtectionFunctionTemplate_1 = __webpack_require__(125); +var DebugProtectionFunctionTemplate_1 = __webpack_require__(124); var AbstractCustomNode_1 = __webpack_require__(13); var NodeUtils_1 = __webpack_require__(8); var DebugProtectionFunctionNode = function (_AbstractCustomNode_) { @@ -4082,7 +4076,7 @@ DebugProtectionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tsli exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode; /***/ }, -/* 77 */ +/* 76 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4180,7 +4174,7 @@ DebugProtectionCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), t exports.DebugProtectionCustomNodeGroup = DebugProtectionCustomNodeGroup; /***/ }, -/* 78 */ +/* 77 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4217,7 +4211,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); -var DomainLockNodeTemplate_1 = __webpack_require__(126); +var DomainLockNodeTemplate_1 = __webpack_require__(125); var AbstractCustomNode_1 = __webpack_require__(13); var CryptUtils_1 = __webpack_require__(34); var NodeUtils_1 = __webpack_require__(8); @@ -4265,7 +4259,7 @@ DomainLockNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0 exports.DomainLockNode = DomainLockNode; /***/ }, -/* 79 */ +/* 78 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4360,7 +4354,7 @@ DomainLockCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_ exports.DomainLockCustomNodeGroup = DomainLockCustomNodeGroup; /***/ }, -/* 80 */ +/* 79 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4394,7 +4388,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var ObfuscationEvents_1 = __webpack_require__(23); var Initializable_1 = __webpack_require__(10); -var SingleNodeCallControllerTemplate_1 = __webpack_require__(121); +var SingleNodeCallControllerTemplate_1 = __webpack_require__(120); var NoCustomNodes_1 = __webpack_require__(31); var AbstractCustomNode_1 = __webpack_require__(13); var JavaScriptObfuscator_1 = __webpack_require__(24); @@ -4439,7 +4433,7 @@ NodeCallsControllerFunctionNode = tslib_1.__decorate([inversify_1.injectable(), exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode; /***/ }, -/* 81 */ +/* 80 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4473,7 +4467,7 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(31); -var SelfDefendingTemplate_1 = __webpack_require__(127); +var SelfDefendingTemplate_1 = __webpack_require__(126); var AbstractCustomNode_1 = __webpack_require__(13); var JavaScriptObfuscator_1 = __webpack_require__(24); var NodeUtils_1 = __webpack_require__(8); @@ -4512,7 +4506,7 @@ SelfDefendingUnicodeNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1 exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode; /***/ }, -/* 82 */ +/* 81 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4607,7 +4601,7 @@ SelfDefendingCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tsl exports.SelfDefendingCustomNodeGroup = SelfDefendingCustomNodeGroup; /***/ }, -/* 83 */ +/* 82 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4642,12 +4636,12 @@ var format = __webpack_require__(19); var StringArrayEncoding_1 = __webpack_require__(32); var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(31); -var AtobTemplate_1 = __webpack_require__(119); -var Rc4Template_1 = __webpack_require__(120); -var SelfDefendingTemplate_1 = __webpack_require__(128); -var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(129); -var StringArrayCallsWrapperTemplate_1 = __webpack_require__(130); -var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(131); +var AtobTemplate_1 = __webpack_require__(118); +var Rc4Template_1 = __webpack_require__(119); +var SelfDefendingTemplate_1 = __webpack_require__(127); +var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(128); +var StringArrayCallsWrapperTemplate_1 = __webpack_require__(129); +var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(130); var AbstractCustomNode_1 = __webpack_require__(13); var JavaScriptObfuscator_1 = __webpack_require__(24); var NodeUtils_1 = __webpack_require__(8); @@ -4721,7 +4715,7 @@ StringArrayCallsWrapper = tslib_1.__decorate([inversify_1.injectable(), tslib_1. exports.StringArrayCallsWrapper = StringArrayCallsWrapper; /***/ }, -/* 84 */ +/* 83 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4758,7 +4752,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); -var StringArrayTemplate_1 = __webpack_require__(132); +var StringArrayTemplate_1 = __webpack_require__(131); var AbstractCustomNode_1 = __webpack_require__(13); var NodeUtils_1 = __webpack_require__(8); var StringArrayNode = function (_AbstractCustomNode_) { @@ -4805,7 +4799,7 @@ StringArrayNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param( exports.StringArrayNode = StringArrayNode; /***/ }, -/* 85 */ +/* 84 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -4839,8 +4833,8 @@ var ServiceIdentifiers_1 = __webpack_require__(4); var format = __webpack_require__(19); var Initializable_1 = __webpack_require__(10); var NoCustomNodes_1 = __webpack_require__(31); -var SelfDefendingTemplate_1 = __webpack_require__(133); -var StringArrayRotateFunctionTemplate_1 = __webpack_require__(134); +var SelfDefendingTemplate_1 = __webpack_require__(132); +var StringArrayRotateFunctionTemplate_1 = __webpack_require__(133); var AbstractCustomNode_1 = __webpack_require__(13); var JavaScriptObfuscator_1 = __webpack_require__(24); var NodeUtils_1 = __webpack_require__(8); @@ -4898,7 +4892,7 @@ StringArrayRotateFunctionNode = tslib_1.__decorate([inversify_1.injectable(), ts exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode; /***/ }, -/* 86 */ +/* 85 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5008,7 +5002,7 @@ StringArrayCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib exports.StringArrayCustomNodeGroup = StringArrayCustomNodeGroup; /***/ }, -/* 87 */ +/* 86 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5021,7 +5015,7 @@ exports.VisitorDirection = Utils_1.Utils.strEnumify({ }); /***/ }, -/* 88 */ +/* 87 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5063,7 +5057,7 @@ ObfuscationEventEmitter = tslib_1.__decorate([inversify_1.injectable(), tslib_1. exports.ObfuscationEventEmitter = ObfuscationEventEmitter; /***/ }, -/* 89 */ +/* 88 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5151,7 +5145,7 @@ exports.BlockStatementControlFlowTransformer = BlockStatementControlFlowTransfor var BlockStatementControlFlowTransformer_1; /***/ }, -/* 90 */ +/* 89 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5290,7 +5284,7 @@ exports.FunctionControlFlowTransformer = FunctionControlFlowTransformer; var FunctionControlFlowTransformer_1; /***/ }, -/* 91 */ +/* 90 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5349,7 +5343,7 @@ exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplace var BinaryExpressionControlFlowReplacer_1; /***/ }, -/* 92 */ +/* 91 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5425,7 +5419,7 @@ exports.CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer; var CallExpressionControlFlowReplacer_1; /***/ }, -/* 93 */ +/* 92 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5502,7 +5496,7 @@ exports.LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowRepla var LogicalExpressionControlFlowReplacer_1; /***/ }, -/* 94 */ +/* 93 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5590,7 +5584,7 @@ CatchClauseTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1._ exports.CatchClauseTransformer = CatchClauseTransformer; /***/ }, -/* 95 */ +/* 94 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5728,7 +5722,7 @@ FunctionDeclarationTransformer = tslib_1.__decorate([inversify_1.injectable(), t exports.FunctionDeclarationTransformer = FunctionDeclarationTransformer; /***/ }, -/* 96 */ +/* 95 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5826,7 +5820,7 @@ FunctionTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__pa exports.FunctionTransformer = FunctionTransformer; /***/ }, -/* 97 */ +/* 96 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -5914,13 +5908,13 @@ LabeledStatementTransformer = tslib_1.__decorate([inversify_1.injectable(), tsli exports.LabeledStatementTransformer = LabeledStatementTransformer; /***/ }, -/* 98 */ +/* 97 */ /***/ function(module, exports, __webpack_require__) { "use strict"; -var _typeof2 = __webpack_require__(142); +var _typeof2 = __webpack_require__(141); var _typeof3 = _interopRequireDefault(_typeof2); @@ -5998,7 +5992,7 @@ LiteralTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__par exports.LiteralTransformer = LiteralTransformer; /***/ }, -/* 99 */ +/* 98 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6068,7 +6062,7 @@ MemberExpressionTransformer = tslib_1.__decorate([inversify_1.injectable(), tsli exports.MemberExpressionTransformer = MemberExpressionTransformer; /***/ }, -/* 100 */ +/* 99 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6137,7 +6131,7 @@ exports.MethodDefinitionTransformer = MethodDefinitionTransformer; var MethodDefinitionTransformer_1; /***/ }, -/* 101 */ +/* 100 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6228,7 +6222,7 @@ exports.ObjectExpressionTransformer = ObjectExpressionTransformer; var ObjectExpressionTransformer_1; /***/ }, -/* 102 */ +/* 101 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6363,7 +6357,7 @@ exports.TemplateLiteralTransformer = TemplateLiteralTransformer; var TemplateLiteralTransformer_1; /***/ }, -/* 103 */ +/* 102 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6504,7 +6498,7 @@ VariableDeclarationTransformer = tslib_1.__decorate([inversify_1.injectable(), t exports.VariableDeclarationTransformer = VariableDeclarationTransformer; /***/ }, -/* 104 */ +/* 103 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6557,7 +6551,7 @@ BooleanLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1._ exports.BooleanLiteralReplacer = BooleanLiteralReplacer; /***/ }, -/* 105 */ +/* 104 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6636,7 +6630,7 @@ IdentifierReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__par exports.IdentifierReplacer = IdentifierReplacer; /***/ }, -/* 106 */ +/* 105 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6707,7 +6701,7 @@ NumberLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__ exports.NumberLiteralReplacer = NumberLiteralReplacer; /***/ }, -/* 107 */ +/* 106 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -6837,13 +6831,13 @@ exports.StringLiteralReplacer = StringLiteralReplacer; var StringLiteralReplacer_1; /***/ }, -/* 108 */ +/* 107 */ /***/ function(module, exports, __webpack_require__) { "use strict"; -var _assign = __webpack_require__(136); +var _assign = __webpack_require__(135); var _assign2 = _interopRequireDefault(_assign); @@ -6857,8 +6851,8 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var class_validator_1 = __webpack_require__(143); var Default_1 = __webpack_require__(43); -var OptionsNormalizer_1 = __webpack_require__(109); -var ValidationErrorsFormatter_1 = __webpack_require__(110); +var OptionsNormalizer_1 = __webpack_require__(108); +var ValidationErrorsFormatter_1 = __webpack_require__(109); var Options = Options_1 = function Options(inputOptions) { (0, _classCallCheck3.default)(this, Options); @@ -6907,7 +6901,7 @@ exports.Options = Options; var Options_1; /***/ }, -/* 109 */ +/* 108 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7092,7 +7086,7 @@ OptionsNormalizer.normalizerRules = [OptionsNormalizer.controlFlowFlatteningThre exports.OptionsNormalizer = OptionsNormalizer; /***/ }, -/* 110 */ +/* 109 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7168,7 +7162,7 @@ var ValidationErrorsFormatter = function () { exports.ValidationErrorsFormatter = ValidationErrorsFormatter; /***/ }, -/* 111 */ +/* 110 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7275,7 +7269,7 @@ exports.StackTraceAnalyzer = StackTraceAnalyzer; var StackTraceAnalyzer_1; /***/ }, -/* 112 */ +/* 111 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7334,9 +7328,9 @@ var FunctionDeclarationCalleeDataExtractor = function (_AbstractCalleeDataEx) { } }, { key: "getCalleeBlockStatement", - value: function getCalleeBlockStatement(node, name) { + value: function getCalleeBlockStatement(targetNode, name) { var calleeBlockStatement = null; - estraverse.traverse(node, { + estraverse.traverse(targetNode, { enter: function enter(node) { if (Node_1.Node.isFunctionDeclarationNode(node) && node.id.name === name) { calleeBlockStatement = node.body; @@ -7353,7 +7347,7 @@ FunctionDeclarationCalleeDataExtractor = tslib_1.__decorate([inversify_1.injecta exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor; /***/ }, -/* 113 */ +/* 112 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7415,9 +7409,9 @@ var FunctionExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { } }, { key: "getCalleeBlockStatement", - value: function getCalleeBlockStatement(node, name) { + value: function getCalleeBlockStatement(targetNode, name) { var calleeBlockStatement = null; - estraverse.traverse(node, { + estraverse.traverse(targetNode, { enter: function enter(node, parentNode) { if (Node_1.Node.isFunctionExpressionNode(node) && Node_1.Node.isVariableDeclaratorNode(parentNode) && Node_1.Node.isIdentifierNode(parentNode.id) && parentNode.id.name === name) { calleeBlockStatement = node.body; @@ -7434,7 +7428,7 @@ FunctionExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectab exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor; /***/ }, -/* 114 */ +/* 113 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7520,7 +7514,7 @@ var ObjectExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { } }, { key: "getCalleeBlockStatement", - value: function getCalleeBlockStatement(node, objectMembersCallsChain) { + value: function getCalleeBlockStatement(targetNode, objectMembersCallsChain) { var _this2 = this; var objectName = objectMembersCallsChain.shift(); @@ -7528,7 +7522,7 @@ var ObjectExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) { return null; } var calleeBlockStatement = null; - estraverse.traverse(node, { + estraverse.traverse(targetNode, { enter: function enter(node, parentNode) { if (Node_1.Node.isVariableDeclaratorNode(node) && Node_1.Node.isIdentifierNode(node.id) && node.init && Node_1.Node.isObjectExpressionNode(node.init) && node.id.name === objectName) { calleeBlockStatement = _this2.findCalleeBlockStatement(node.init.properties, objectMembersCallsChain); @@ -7589,7 +7583,7 @@ ObjectExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor; /***/ }, -/* 115 */ +/* 114 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7677,7 +7671,7 @@ ArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata( exports.ArrayStorage = ArrayStorage; /***/ }, -/* 116 */ +/* 115 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7721,7 +7715,7 @@ var ControlFlowStorage = function (_MapStorage_1$MapStor) { exports.ControlFlowStorage = ControlFlowStorage; /***/ }, -/* 117 */ +/* 116 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7797,7 +7791,7 @@ exports.CustomNodeGroupStorage = CustomNodeGroupStorage; var CustomNodeGroupStorage_1; /***/ }, -/* 118 */ +/* 117 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7831,7 +7825,7 @@ 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__(115); +var ArrayStorage_1 = __webpack_require__(114); var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(14); var StringArrayStorage = function (_ArrayStorage_1$Array) { @@ -7875,7 +7869,7 @@ StringArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__met exports.StringArrayStorage = StringArrayStorage; /***/ }, -/* 119 */ +/* 118 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7887,7 +7881,7 @@ function AtobTemplate() { exports.AtobTemplate = AtobTemplate; /***/ }, -/* 120 */ +/* 119 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7899,7 +7893,7 @@ function Rc4Template() { exports.Rc4Template = Rc4Template; /***/ }, -/* 121 */ +/* 120 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7911,7 +7905,7 @@ function SingleNodeCallControllerTemplate() { exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate; /***/ }, -/* 122 */ +/* 121 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7923,7 +7917,7 @@ function ConsoleOutputDisableExpressionTemplate() { exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate; /***/ }, -/* 123 */ +/* 122 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7935,7 +7929,7 @@ function DebugProtectionFunctionCallTemplate() { exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate; /***/ }, -/* 124 */ +/* 123 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7947,7 +7941,7 @@ function DebugProtectionFunctionIntervalTemplate() { exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate; /***/ }, -/* 125 */ +/* 124 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7959,7 +7953,7 @@ function DebugProtectionFunctionTemplate() { exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate; /***/ }, -/* 126 */ +/* 125 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7971,7 +7965,7 @@ function DomainLockNodeTemplate() { exports.DomainLockNodeTemplate = DomainLockNodeTemplate; /***/ }, -/* 127 */ +/* 126 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7984,7 +7978,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 128 */ +/* 127 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -7997,7 +7991,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 129 */ +/* 128 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -8009,7 +8003,7 @@ function StringArrayBase64DecodeNodeTemplate() { exports.StringArrayBase64DecodeNodeTemplate = StringArrayBase64DecodeNodeTemplate; /***/ }, -/* 130 */ +/* 129 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -8021,7 +8015,7 @@ function StringArrayCallsWrapperTemplate() { exports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate; /***/ }, -/* 131 */ +/* 130 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -8033,7 +8027,7 @@ function StringArrayRc4DecodeNodeTemplate() { exports.StringArrayRc4DecodeNodeTemplate = StringArrayRc4DecodeNodeTemplate; /***/ }, -/* 132 */ +/* 131 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -8045,7 +8039,7 @@ function StringArrayTemplate() { exports.StringArrayTemplate = StringArrayTemplate; /***/ }, -/* 133 */ +/* 132 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -8058,7 +8052,7 @@ function SelfDefendingTemplate() { exports.SelfDefendingTemplate = SelfDefendingTemplate; /***/ }, -/* 134 */ +/* 133 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -8070,53 +8064,59 @@ function StringArrayRotateFunctionTemplate() { exports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate; /***/ }, -/* 135 */ +/* 134 */ /***/ function(module, exports) { module.exports = require("babel-polyfill"); /***/ }, -/* 136 */ +/* 135 */ /***/ function(module, exports) { module.exports = require("babel-runtime/core-js/object/assign"); /***/ }, -/* 137 */ +/* 136 */ /***/ function(module, exports) { module.exports = require("babel-runtime/core-js/object/define-property"); /***/ }, -/* 138 */ +/* 137 */ /***/ function(module, exports) { module.exports = require("babel-runtime/core-js/object/get-own-property-descriptor"); /***/ }, -/* 139 */ +/* 138 */ /***/ function(module, exports) { module.exports = require("babel-runtime/core-js/set"); /***/ }, -/* 140 */ +/* 139 */ /***/ function(module, exports) { module.exports = require("babel-runtime/core-js/symbol"); /***/ }, -/* 141 */ +/* 140 */ /***/ function(module, exports) { module.exports = require("babel-runtime/helpers/defineProperty"); /***/ }, -/* 142 */ +/* 141 */ /***/ function(module, exports) { module.exports = require("babel-runtime/helpers/typeof"); +/***/ }, +/* 142 */ +/***/ function(module, exports) { + +module.exports = require("chance"); + /***/ }, /* 143 */ /***/ function(module, exports) { @@ -8160,8 +8160,7 @@ module.exports = require("mkdirp"); module.exports = require("reflect-metadata"); /***/ }, -/* 150 */, -/* 151 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { "use strict"; diff --git a/package.json b/package.json index 36f13409..f2cd0521 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "javascript-obfuscator", - "version": "0.9.0-dev.8", + "version": "0.9.0-dev.9", "description": "JavaScript obfuscator", "keywords": [ "obfuscator", @@ -23,7 +23,7 @@ "babel-polyfill": "^6.20.0", "babel-runtime": "^6.20.0", "chance": "1.0.4", - "class-validator": "0.6.6", + "class-validator": "0.6.8", "commander": "2.9.0", "escodegen": "1.8.1", "esprima": "3.1.3", @@ -44,10 +44,10 @@ "@types/esprima": "2.1.33", "@types/estraverse": "0.0.6", "@types/estree": "0.0.34", - "@types/lodash": "^4.14.45", + "@types/lodash": "^4.14.47", "@types/mkdirp": "0.3.29", - "@types/mocha": "2.2.35", - "@types/node": "6.0.57", + "@types/mocha": "2.2.36", + "@types/node": "6.0.58", "@types/sinon": "1.16.34", "@types/string-template": "1.0.2", "awesome-typescript-loader": "3.0.0-beta.17", @@ -61,10 +61,10 @@ "mocha": "3.2.0", "sinon": "2.0.0-pre.4", "ts-node": "2.0.0", - "tslint": "4.2.0", + "tslint": "4.3.1", "tslint-loader": "^3.3.0", "typescript": "2.1.4", - "webpack": "2.2.0-rc.2", + "webpack": "2.2.0-rc.3", "webpack-node-externals": "1.5.4" }, "repository": { diff --git a/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts b/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts index a4a354f1..556f4920 100644 --- a/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts @@ -34,7 +34,7 @@ export class CatchClauseTransformer extends AbstractNodeTransformer { * @param replacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts b/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts index 0617deec..33918ac0 100644 --- a/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts @@ -42,7 +42,7 @@ export class FunctionDeclarationTransformer extends AbstractNodeTransformer { * @param nodeObfuscatorsReplacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) nodeObfuscatorsReplacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts b/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts index 75c6fd35..0a53f4bc 100644 --- a/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts @@ -34,7 +34,7 @@ export class FunctionTransformer extends AbstractNodeTransformer { * @param nodeObfuscatorsReplacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) nodeObfuscatorsReplacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts b/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts index d716b904..e1c83d41 100644 --- a/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts @@ -42,7 +42,7 @@ export class LabeledStatementTransformer extends AbstractNodeTransformer { * @param nodeObfuscatorsReplacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) nodeObfuscatorsReplacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/LiteralTransformer.ts b/src/node-transformers/obfuscation-transformers/LiteralTransformer.ts index e0824561..d90eb7de 100644 --- a/src/node-transformers/obfuscation-transformers/LiteralTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/LiteralTransformer.ts @@ -23,7 +23,7 @@ export class LiteralTransformer extends AbstractNodeTransformer { * @param replacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts b/src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts index 4ad22d47..98eb479d 100644 --- a/src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts @@ -23,7 +23,7 @@ export class MemberExpressionTransformer extends AbstractNodeTransformer { * @param replacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts b/src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts index a84e57df..15b1d4b4 100644 --- a/src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts @@ -37,7 +37,7 @@ export class MethodDefinitionTransformer extends AbstractNodeTransformer { * @param replacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts b/src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts index 5f813336..133166bd 100644 --- a/src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts @@ -27,7 +27,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer { /** * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.IOptions) options: IOptions ) { super(options); diff --git a/src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts b/src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts index 79fd5697..75de2f53 100644 --- a/src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts @@ -27,7 +27,7 @@ export class TemplateLiteralTransformer extends AbstractNodeTransformer { * @param replacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts b/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts index c0b736a0..505560dd 100644 --- a/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts @@ -43,7 +43,7 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer { * @param replacersFactory * @param options */ - constructor( + constructor ( @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer, @inject(ServiceIdentifiers.IOptions) options: IOptions ) { diff --git a/src/node/NodeUtils.ts b/src/node/NodeUtils.ts index 7c2bba50..14e95125 100644 --- a/src/node/NodeUtils.ts +++ b/src/node/NodeUtils.ts @@ -23,20 +23,20 @@ export class NodeUtils { ]; /** - * @param node + * @param astTree * @return {T} */ - public static addXVerbatimPropertyToLiterals (node: T): T { - NodeUtils.typedReplace(node, NodeType.Literal, { - leave: (node: ESTree.Literal) => { - node['x-verbatim-property'] = { - content : node.raw, + public static addXVerbatimPropertyToLiterals (astTree: T): T { + NodeUtils.typedReplace(astTree, NodeType.Literal, { + leave: (literalNode: ESTree.Literal) => { + literalNode['x-verbatim-property'] = { + content : literalNode.raw, precedence: escodegen.Precedence.Primary }; } }); - return node; + return astTree; } /** @@ -152,13 +152,13 @@ export class NodeUtils { } /** - * @param node + * @param astTree * @return {T} */ - public static parentize (node: T): T { + public static parentize (astTree: T): T { let isRootNode: boolean = true; - estraverse.traverse(node, { + estraverse.traverse(astTree, { enter: (node: ESTree.Node, parentNode: ESTree.Node): any => { let value: ESTree.Node; @@ -180,35 +180,35 @@ export class NodeUtils { } }); - return node; + return astTree; } /** - * @param node + * @param astTree * @param nodeType * @param visitor */ public static typedReplace ( - node: ESTree.Node, + astTree: ESTree.Node, nodeType: string, visitor: {enter?: (node: ESTree.Node) => void, leave?: (node: ESTree.Node) => void}, ): void { - NodeUtils.typedTraverse(node, nodeType, visitor, 'replace'); + NodeUtils.typedTraverse(astTree, nodeType, visitor, 'replace'); } /** - * @param node + * @param astTree * @param nodeType * @param visitor * @param traverseType */ public static typedTraverse ( - node: ESTree.Node, + astTree: ESTree.Node, nodeType: string, visitor: estraverse.Visitor, traverseType: string = 'traverse' ): void { - (estraverse)[traverseType](node, { + (estraverse)[traverseType](astTree, { enter: (node: ESTree.Node, parentNode: ESTree.Node): any => { if (node.type === nodeType && visitor.enter) { return visitor.enter(node, parentNode); diff --git a/src/stack-trace-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts b/src/stack-trace-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts index 92b4a72a..1f82b122 100644 --- a/src/stack-trace-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts +++ b/src/stack-trace-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts @@ -37,14 +37,14 @@ export class FunctionDeclarationCalleeDataExtractor extends AbstractCalleeDataEx } /** - * @param node + * @param targetNode * @param name * @returns {ESTree.BlockStatement|null} */ - private getCalleeBlockStatement (node: ESTree.Node, name: string): ESTree.BlockStatement|null { + private getCalleeBlockStatement (targetNode: ESTree.Node, name: string): ESTree.BlockStatement|null { let calleeBlockStatement: ESTree.BlockStatement|null = null; - estraverse.traverse(node, { + estraverse.traverse(targetNode, { enter: (node: ESTree.Node): any => { if (Node.isFunctionDeclarationNode(node) && node.id.name === name) { calleeBlockStatement = node.body; diff --git a/src/stack-trace-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts b/src/stack-trace-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts index f7dd7eb8..ecefa9ae 100644 --- a/src/stack-trace-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts +++ b/src/stack-trace-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts @@ -41,14 +41,14 @@ export class FunctionExpressionCalleeDataExtractor extends AbstractCalleeDataExt } /** - * @param node + * @param targetNode * @param name * @returns {ESTree.BlockStatement|null} */ - private getCalleeBlockStatement (node: ESTree.Node, name: string): ESTree.BlockStatement|null { + private getCalleeBlockStatement (targetNode: ESTree.Node, name: string): ESTree.BlockStatement|null { let calleeBlockStatement: ESTree.BlockStatement|null = null; - estraverse.traverse(node, { + estraverse.traverse(targetNode, { enter: (node: ESTree.Node, parentNode: ESTree.Node): any => { if ( Node.isFunctionExpressionNode(node) && diff --git a/src/stack-trace-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts b/src/stack-trace-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts index 80a401bf..71b6e77e 100644 --- a/src/stack-trace-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts +++ b/src/stack-trace-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts @@ -85,12 +85,12 @@ export class ObjectExpressionCalleeDataExtractor extends AbstractCalleeDataExtra } /** - * @param node + * @param targetNode * @param objectMembersCallsChain * @returns {ESTree.BlockStatement|null} */ private getCalleeBlockStatement ( - node: ESTree.Node, + targetNode: ESTree.Node, objectMembersCallsChain: TObjectMembersCallsChain ): ESTree.BlockStatement|null { const objectName: string|number|undefined = objectMembersCallsChain.shift(); @@ -101,7 +101,7 @@ export class ObjectExpressionCalleeDataExtractor extends AbstractCalleeDataExtra let calleeBlockStatement: ESTree.BlockStatement|null = null; - estraverse.traverse(node, { + estraverse.traverse(targetNode, { enter: (node: ESTree.Node, parentNode: ESTree.Node): any => { if ( Node.isVariableDeclaratorNode(node) && diff --git a/src/utils/CryptUtils.ts b/src/utils/CryptUtils.ts index d2ce86f3..167d8583 100644 --- a/src/utils/CryptUtils.ts +++ b/src/utils/CryptUtils.ts @@ -38,7 +38,7 @@ export class CryptUtils { * @param length * @returns {string[]} */ - public static hideString(str: string, length: number): [string, string] { + public static hideString (str: string, length: number): [string, string] { const escapeRegExp: (s: string) => string = (s: string) => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); diff --git a/tslint.json b/tslint.json index 57311362..4fff2ded 100644 --- a/tslint.json +++ b/tslint.json @@ -29,6 +29,7 @@ true, "always-prefix" ], + "import-spacing": true, "jsdoc-format": true, "label-position": true, "max-line-length": false, @@ -66,7 +67,7 @@ "no-parameter-properties": true, "no-reference": true, "no-require-imports": false, - "no-shadowed-variable": false, + "no-shadowed-variable": true, "no-string-literal": true, "no-string-throw": true, "no-switch-case-fall-through": false, @@ -89,6 +90,7 @@ "quotemark": false, "radix": true, "semicolon": [true, "always"], + "space-before-function-paren": true, "switch-default": false, "trailing-comma": false, "triple-equals": [ @@ -122,6 +124,8 @@ "variable-declaration": "space" } ], + "typeof-compare": true, + "unified-signatures": true, "use-isnan": true, "variable-name": false, "whitespace": [ From d0ba15bbb3574dc9a13fd9a02c2dd83be7e8bca8 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sun, 8 Jan 2017 13:40:43 +0300 Subject: [PATCH 02/11] slightly stronger tslint rules: fixed escodegen declaration --- dist/index.js | 5 +++-- src/declarations/escodegen.d.ts | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dist/index.js b/dist/index.js index 2f01500b..be1266a7 100644 --- a/dist/index.js +++ b/dist/index.js @@ -90,7 +90,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 150); +/******/ return __webpack_require__(__webpack_require__.s = 151); /******/ }) /************************************************************************/ /******/ ([ @@ -8160,7 +8160,8 @@ module.exports = require("mkdirp"); module.exports = require("reflect-metadata"); /***/ }, -/* 150 */ +/* 150 */, +/* 151 */ /***/ function(module, exports, __webpack_require__) { "use strict"; diff --git a/src/declarations/escodegen.d.ts b/src/declarations/escodegen.d.ts index f4de14be..db95ff42 100644 --- a/src/declarations/escodegen.d.ts +++ b/src/declarations/escodegen.d.ts @@ -6,5 +6,5 @@ declare module 'escodegen' { * @param options * @returns IGeneratorOutput */ - export function generate(ast: any, options?: GenerateOptions): IGeneratorOutput; + export function generate (ast: any, options?: GenerateOptions): IGeneratorOutput; } From 5d649b23d74e27d299afef289689714da60357b4 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 9 Jan 2017 21:41:31 +0300 Subject: [PATCH 03/11] syncing changes from 0.8.4 with dev --- CHANGELOG.md | 4 +++ dist/index.js | 2 +- .../ConsoleOutputDisableExpressionTemplate.ts | 27 ++++++++++++++++--- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 47702757..151a805e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ Change Log === +v0.8.4 +--- +* fixed https://github.com/javascript-obfuscator/webpack-obfuscator/issues/13 + v0.8.3 --- * `selfDefending` option now disabled by default. diff --git a/dist/index.js b/dist/index.js index be1266a7..ecd77990 100644 --- a/dist/index.js +++ b/dist/index.js @@ -7912,7 +7912,7 @@ exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate; function ConsoleOutputDisableExpressionTemplate() { - return "\n var {consoleLogDisableFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var getGlobal = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');');\n \n var func = function () {};\n var that = getGlobal();\n \n that.console.log = func; \n that.console.error = func;\n that.console.warn = func;\n that.console.info = func;\n });\n \n {consoleLogDisableFunctionName}();\n "; + return "\n var {consoleLogDisableFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var getGlobal = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');');\n \n var func = function () {};\n var that = getGlobal();\n \n if (!that.console) {\n that.console = (function (func){ \n var c = {}; \n \n c.log = func;\n c.warn = func; \n c.debug = func;\n c.info = func;\n c.error = func;\n c.exception = func;\n c.trace = func;\n \n return c; \n })(func);\n } else {\n that.console.log = func;\n that.console.warn = func; \n that.console.debug = func;\n that.console.info = func;\n that.console.error = func;\n that.console.exception = func;\n that.console.trace = func;\n }\n });\n \n {consoleLogDisableFunctionName}();\n "; } exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate; diff --git a/src/templates/custom-nodes/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts b/src/templates/custom-nodes/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts index 949d1965..5dce8ab9 100644 --- a/src/templates/custom-nodes/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts +++ b/src/templates/custom-nodes/console-output-nodes/console-output-disable-expression-node/ConsoleOutputDisableExpressionTemplate.ts @@ -9,10 +9,29 @@ export function ConsoleOutputDisableExpressionTemplate (): string { var func = function () {}; var that = getGlobal(); - that.console.log = func; - that.console.error = func; - that.console.warn = func; - that.console.info = func; + if (!that.console) { + that.console = (function (func){ + var c = {}; + + c.log = func; + c.warn = func; + c.debug = func; + c.info = func; + c.error = func; + c.exception = func; + c.trace = func; + + return c; + })(func); + } else { + that.console.log = func; + that.console.warn = func; + that.console.debug = func; + that.console.info = func; + that.console.error = func; + that.console.exception = func; + that.console.trace = func; + } }); {consoleLogDisableFunctionName}(); From a8339bc4ae02dac68a70c0b5c0d6fa7b247c8b27 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 9 Jan 2017 22:08:18 +0300 Subject: [PATCH 04/11] getRandomVariableName refactoring + tests --- dist/index.js | 37 ++++++++++--------- .../ConsoleOutputDisableExpressionNode.ts | 2 +- .../group/ConsoleOutputCustomNodeGroup.ts | 2 +- .../BinaryExpressionFunctionNode.ts | 2 +- .../CallExpressionFunctionNode.ts | 2 +- .../LogicalExpressionFunctionNode.ts | 2 +- .../group/DebugProtectionCustomNodeGroup.ts | 2 +- .../domain-lock-nodes/DomainLockNode.ts | 2 +- .../group/DomainLockCustomNodeGroup.ts | 2 +- .../SelfDefendingUnicodeNode.ts | 2 +- .../group/SelfDefendingCustomNodeGroup.ts | 2 +- .../StringArrayRotateFunctionNode.ts | 4 +- .../replacers/IdentifierReplacer.ts | 2 +- .../string-array/StringArrayStorage.ts | 2 +- src/utils/RandomGeneratorUtils.ts | 15 +++++--- ...ConsoleOutputDisableExpressionNode.spec.ts | 2 +- .../domain-lock-nodes/DomainLockNode.spec.ts | 4 +- .../StringArrayCallsWrapper.spec.ts | 2 +- .../StringArrayNode.spec.ts | 4 +- .../StringArrayRotateFunctionNode.spec.ts | 4 +- ...ockStatementControlFlowTransformer.spec.ts | 16 ++++---- ...inaryExpressionControlFlowReplacer.spec.ts | 6 +-- .../CallExpressionControlFlowReplacer.spec.ts | 8 ++-- ...gicalExpressionControlFlowReplacer.spec.ts | 10 ++--- .../FunctionControlFlowTransformer.spec.ts | 4 +- .../CatchClauseTransformer.spec.ts | 4 +- .../FunctionDeclarationTransformer.spec.ts | 4 +- .../FunctionTransformer.spec.ts | 4 +- .../LabeledStatementTransformer.spec.ts | 6 +-- .../LiteralTransformer.spec.ts | 20 +++++----- .../MemberExpressionTransformer.spec.ts | 8 ++-- .../MethodDefinitionTransformer.spec.ts | 4 +- .../ObjectExpressionTransformer.spec.ts | 2 +- .../VariableDeclarationTransformer.spec.ts | 24 ++++++------ .../RandomGeneratorUtils.spec.ts | 4 +- 35 files changed, 112 insertions(+), 108 deletions(-) diff --git a/dist/index.js b/dist/index.js index ecd77990..44c99405 100644 --- a/dist/index.js +++ b/dist/index.js @@ -454,13 +454,13 @@ var RandomGeneratorUtils = function () { } }, { key: "getRandomVariableName", - value: function getRandomVariableName(length, withPrefix, unique) { - var prefix = withPrefix ? "_" + Utils_1.Utils.hexadecimalPrefix : ''; + value: function getRandomVariableName(length) { + var prefix = "_" + Utils_1.Utils.hexadecimalPrefix; var rangeMinInteger = 10000; var rangeMaxInteger = 99999999; var randomVariableName = "" + prefix + Utils_1.Utils.decToHex(RandomGeneratorUtils.getRandomInteger(rangeMinInteger, rangeMaxInteger)).substr(0, length); - if (unique && RandomGeneratorUtils.randomVariableNameSet.has(randomVariableName)) { - return RandomGeneratorUtils.getRandomVariableName(length, withPrefix, unique); + if (RandomGeneratorUtils.randomVariableNameSet.has(randomVariableName)) { + return RandomGeneratorUtils.getRandomVariableName(length); } RandomGeneratorUtils.randomVariableNameSet.add(randomVariableName); return randomVariableName; @@ -470,6 +470,7 @@ var RandomGeneratorUtils = function () { }(); RandomGeneratorUtils.randomGeneratorPool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; +RandomGeneratorUtils.randomGeneratorPoolHexadecimal = 'abcdef0123456789'; RandomGeneratorUtils.randomGeneratorPoolWithNumbers = RandomGeneratorUtils.randomGeneratorPool + "0123456789"; RandomGeneratorUtils.randomVariableNameSet = new _set2.default(); exports.RandomGeneratorUtils = RandomGeneratorUtils; @@ -3271,7 +3272,7 @@ var ConsoleOutputDisableExpressionNode = function (_AbstractCustomNode_) { key: "getTemplate", value: function getTemplate() { return format(ConsoleOutputDisableExpressionTemplate_1.ConsoleOutputDisableExpressionTemplate(), { - consoleLogDisableFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true), + consoleLogDisableFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6), singleNodeCallControllerFunctionName: this.callsControllerFunctionName }); } @@ -3362,7 +3363,7 @@ var ConsoleOutputCustomNodeGroup = function (_AbstractCustomNodeGr) { if (!this.options.disableConsoleOutput) { return; } - var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true); + var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); var consoleOutputDisableExpressionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.ConsoleOutputDisableExpressionNode); var nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode); consoleOutputDisableExpressionNode.initialize(callsControllerFunctionName); @@ -3430,7 +3431,7 @@ var BinaryExpressionFunctionNode = function (_AbstractCustomNode_) { }, { key: "getNodeStructure", value: function getNodeStructure() { - var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(1, true, false), [Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')], Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getBinaryExpressionNode(this.operator, Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')))])); + var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3), [Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')], Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getBinaryExpressionNode(this.operator, Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')))])); NodeUtils_1.NodeUtils.parentize(structure); return [structure]; } @@ -3574,7 +3575,7 @@ var CallExpressionFunctionNode = function (_AbstractCustomNode_) { for (var i = 0; i < argumentsLength; i++) { params.push(Nodes_1.Nodes.getIdentifierNode("param" + (i + 1))); } - var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(1, true, false), [calleeIdentifier].concat(params), Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getCallExpressionNode(calleeIdentifier, params))])); + var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3), [calleeIdentifier].concat(params), Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getCallExpressionNode(calleeIdentifier, params))])); NodeUtils_1.NodeUtils.parentize(structure); return [structure]; } @@ -3638,7 +3639,7 @@ var LogicalExpressionFunctionNode = function (_AbstractCustomNode_) { }, { key: "getNodeStructure", value: function getNodeStructure() { - var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(1, true, false), [Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')], Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getLogicalExpressionNode(this.operator, Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')))])); + var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3), [Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')], Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getLogicalExpressionNode(this.operator, Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')))])); NodeUtils_1.NodeUtils.parentize(structure); return [structure]; } @@ -4153,7 +4154,7 @@ var DebugProtectionCustomNodeGroup = function (_AbstractCustomNodeGr) { if (!this.options.debugProtection) { return; } - var debugProtectionFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true); + var debugProtectionFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); var debugProtectionFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DebugProtectionFunctionNode); var debugProtectionFunctionCallNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DebugProtectionFunctionCallNode); var debugProtectionFunctionIntervalNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DebugProtectionFunctionIntervalNode); @@ -4245,7 +4246,7 @@ var DomainLockNode = function (_AbstractCustomNode_) { diff = _CryptUtils_1$CryptUt2[1]; return format(DomainLockNodeTemplate_1.DomainLockNodeTemplate(), { - domainLockFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true), + domainLockFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6), diff: diff, domains: hiddenDomainsString, singleNodeCallControllerFunctionName: this.callsControllerFunctionName @@ -4338,7 +4339,7 @@ var DomainLockCustomNodeGroup = function (_AbstractCustomNodeGr) { if (!this.options.domainLock.length) { return; } - var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true); + var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); var domainLockNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DomainLockNode); var nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode); domainLockNode.initialize(callsControllerFunctionName); @@ -4494,7 +4495,7 @@ var SelfDefendingUnicodeNode = function (_AbstractCustomNode_) { key: "getTemplate", value: function getTemplate() { return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(SelfDefendingTemplate_1.SelfDefendingTemplate(), { - selfDefendingFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true), + selfDefendingFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6), singleNodeCallControllerFunctionName: this.callsControllerFunctionName }), tslib_1.__assign({}, NoCustomNodes_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed })).getObfuscatedCode(); } @@ -4585,7 +4586,7 @@ var SelfDefendingCustomNodeGroup = function (_AbstractCustomNodeGr) { if (!this.options.selfDefending) { return; } - var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true); + var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); var selfDefendingUnicodeNode = this.customNodeFactory(CustomNodes_1.CustomNodes.SelfDefendingUnicodeNode); var nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode); selfDefendingUnicodeNode.initialize(callsControllerFunctionName); @@ -4863,8 +4864,8 @@ var StringArrayRotateFunctionNode = function (_AbstractCustomNode_) { }, { key: "getTemplate", value: function getTemplate() { - var timesName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true); - var whileFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true); + var timesName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); + var whileFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6); var code = ''; if (this.options.selfDefending) { code = format(SelfDefendingTemplate_1.SelfDefendingTemplate(), { @@ -6613,7 +6614,7 @@ var IdentifierReplacer = function (_AbstractReplacer_1$A) { key: "storeNames", value: function storeNames(nodeName, nodeIdentifier) { if (!this.isReservedName(nodeName)) { - this.namesMap.set(nodeName + "-" + String(nodeIdentifier), RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6, true, true)); + this.namesMap.set(nodeName + "-" + String(nodeIdentifier), RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6)); } } }, { @@ -7848,7 +7849,7 @@ var StringArrayStorage = function (_ArrayStorage_1$Array) { } (0, _get3.default)(StringArrayStorage.prototype.__proto__ || (0, _getPrototypeOf2.default)(StringArrayStorage.prototype), "initialize", this).call(this, args); - this.storageId = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(4, false, false); + this.storageId = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(4, RandomGeneratorUtils_1.RandomGeneratorUtils.randomGeneratorPoolHexadecimal); } }, { key: "rotateArray", diff --git a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts index 005abfe5..a8c64cb5 100644 --- a/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts +++ b/src/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.ts @@ -51,7 +51,7 @@ export class ConsoleOutputDisableExpressionNode extends AbstractCustomNode { */ protected getTemplate (): string { return format(ConsoleOutputDisableExpressionTemplate(), { - consoleLogDisableFunctionName: RandomGeneratorUtils.getRandomVariableName(6, true, true), + consoleLogDisableFunctionName: RandomGeneratorUtils.getRandomVariableName(6), singleNodeCallControllerFunctionName: this.callsControllerFunctionName }); } diff --git a/src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts b/src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts index de2d421d..62233a3d 100644 --- a/src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts +++ b/src/custom-nodes/console-output-nodes/group/ConsoleOutputCustomNodeGroup.ts @@ -96,7 +96,7 @@ export class ConsoleOutputCustomNodeGroup extends AbstractCustomNodeGroup { return; } - const callsControllerFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6, true, true); + const callsControllerFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6); const consoleOutputDisableExpressionNode: ICustomNode = this.customNodeFactory(CustomNodes.ConsoleOutputDisableExpressionNode); const nodeCallsControllerFunctionNode: ICustomNode = this.customNodeFactory(CustomNodes.NodeCallsControllerFunctionNode); diff --git a/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts b/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts index d03cd287..3c0ac3b8 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts @@ -43,7 +43,7 @@ export class BinaryExpressionFunctionNode extends AbstractCustomNode { */ protected getNodeStructure (): TStatement[] { const structure: TStatement = Nodes.getFunctionDeclarationNode( - RandomGeneratorUtils.getRandomVariableName(1, true, false), + RandomGeneratorUtils.getRandomString(3), [ Nodes.getIdentifierNode('x'), Nodes.getIdentifierNode('y') diff --git a/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts b/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts index 5dd9834e..a2f8f6e0 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts @@ -51,7 +51,7 @@ export class CallExpressionFunctionNode extends AbstractCustomNode { } const structure: TStatement = Nodes.getFunctionDeclarationNode( - RandomGeneratorUtils.getRandomVariableName(1, true, false), + RandomGeneratorUtils.getRandomString(3), [ calleeIdentifier, ...params diff --git a/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts b/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts index 6dfe0319..b8388d89 100644 --- a/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts +++ b/src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts @@ -43,7 +43,7 @@ export class LogicalExpressionFunctionNode extends AbstractCustomNode { */ protected getNodeStructure (): TStatement[] { const structure: TStatement = Nodes.getFunctionDeclarationNode( - RandomGeneratorUtils.getRandomVariableName(1, true, false), + RandomGeneratorUtils.getRandomString(3), [ Nodes.getIdentifierNode('x'), Nodes.getIdentifierNode('y') diff --git a/src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts b/src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts index 30f910e4..034a4876 100644 --- a/src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts +++ b/src/custom-nodes/debug-protection-nodes/group/DebugProtectionCustomNodeGroup.ts @@ -89,7 +89,7 @@ export class DebugProtectionCustomNodeGroup extends AbstractCustomNodeGroup { return; } - const debugProtectionFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6, true, true); + const debugProtectionFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6); const debugProtectionFunctionNode: ICustomNode = this.customNodeFactory(CustomNodes.DebugProtectionFunctionNode); const debugProtectionFunctionCallNode: ICustomNode = this.customNodeFactory(CustomNodes.DebugProtectionFunctionCallNode); diff --git a/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts b/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts index 608f089e..90a771aa 100644 --- a/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts +++ b/src/custom-nodes/domain-lock-nodes/DomainLockNode.ts @@ -55,7 +55,7 @@ export class DomainLockNode extends AbstractCustomNode { const [hiddenDomainsString, diff]: string[] = CryptUtils.hideString(domainsString, domainsString.length * 3); return format(DomainLockNodeTemplate(), { - domainLockFunctionName: RandomGeneratorUtils.getRandomVariableName(6, true, true), + domainLockFunctionName: RandomGeneratorUtils.getRandomVariableName(6), diff: diff, domains: hiddenDomainsString, singleNodeCallControllerFunctionName: this.callsControllerFunctionName diff --git a/src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts b/src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts index e6899a8a..9685f747 100644 --- a/src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts +++ b/src/custom-nodes/domain-lock-nodes/group/DomainLockCustomNodeGroup.ts @@ -96,7 +96,7 @@ export class DomainLockCustomNodeGroup extends AbstractCustomNodeGroup { return; } - const callsControllerFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6, true, true); + const callsControllerFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6); const domainLockNode: ICustomNode = this.customNodeFactory(CustomNodes.DomainLockNode); const nodeCallsControllerFunctionNode: ICustomNode = this.customNodeFactory(CustomNodes.NodeCallsControllerFunctionNode); diff --git a/src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts b/src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts index 4333a676..73eba834 100644 --- a/src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts +++ b/src/custom-nodes/self-defending-nodes/SelfDefendingUnicodeNode.ts @@ -55,7 +55,7 @@ export class SelfDefendingUnicodeNode extends AbstractCustomNode { protected getTemplate (): string { return JavaScriptObfuscator.obfuscate( format(SelfDefendingTemplate(), { - selfDefendingFunctionName: RandomGeneratorUtils.getRandomVariableName(6, true, true), + selfDefendingFunctionName: RandomGeneratorUtils.getRandomVariableName(6), singleNodeCallControllerFunctionName: this.callsControllerFunctionName }), { diff --git a/src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts b/src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts index 5be6efd7..aa534002 100644 --- a/src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts +++ b/src/custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup.ts @@ -96,7 +96,7 @@ export class SelfDefendingCustomNodeGroup extends AbstractCustomNodeGroup { return; } - const callsControllerFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6, true, true); + const callsControllerFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6); const selfDefendingUnicodeNode: ICustomNode = this.customNodeFactory(CustomNodes.SelfDefendingUnicodeNode); const nodeCallsControllerFunctionNode: ICustomNode = this.customNodeFactory(CustomNodes.NodeCallsControllerFunctionNode); diff --git a/src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts b/src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts index 897571d4..d3579907 100644 --- a/src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts +++ b/src/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.ts @@ -76,8 +76,8 @@ export class StringArrayRotateFunctionNode extends AbstractCustomNode { * @returns {string} */ protected getTemplate (): string { - const timesName: string = RandomGeneratorUtils.getRandomVariableName(6, true, true); - const whileFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6, true, true); + const timesName: string = RandomGeneratorUtils.getRandomVariableName(6); + const whileFunctionName: string = RandomGeneratorUtils.getRandomVariableName(6); let code: string = ''; diff --git a/src/node-transformers/obfuscation-transformers/replacers/IdentifierReplacer.ts b/src/node-transformers/obfuscation-transformers/replacers/IdentifierReplacer.ts index eda3a07f..3f02b753 100644 --- a/src/node-transformers/obfuscation-transformers/replacers/IdentifierReplacer.ts +++ b/src/node-transformers/obfuscation-transformers/replacers/IdentifierReplacer.ts @@ -47,7 +47,7 @@ export class IdentifierReplacer extends AbstractReplacer implements IObfuscation */ public storeNames (nodeName: string, nodeIdentifier: number): void { if (!this.isReservedName(nodeName)) { - this.namesMap.set(`${nodeName}-${String(nodeIdentifier)}`, RandomGeneratorUtils.getRandomVariableName(6, true, true)); + this.namesMap.set(`${nodeName}-${String(nodeIdentifier)}`, RandomGeneratorUtils.getRandomVariableName(6)); } } diff --git a/src/storages/string-array/StringArrayStorage.ts b/src/storages/string-array/StringArrayStorage.ts index c543e0ce..768fe024 100644 --- a/src/storages/string-array/StringArrayStorage.ts +++ b/src/storages/string-array/StringArrayStorage.ts @@ -18,7 +18,7 @@ export class StringArrayStorage extends ArrayStorage { public initialize (...args: any[]): void { super.initialize(args); - this.storageId = RandomGeneratorUtils.getRandomVariableName(4, false, false); + this.storageId = RandomGeneratorUtils.getRandomString(4, RandomGeneratorUtils.randomGeneratorPoolHexadecimal); } /** diff --git a/src/utils/RandomGeneratorUtils.ts b/src/utils/RandomGeneratorUtils.ts index 9985a3b0..81fda8fc 100644 --- a/src/utils/RandomGeneratorUtils.ts +++ b/src/utils/RandomGeneratorUtils.ts @@ -8,6 +8,11 @@ export class RandomGeneratorUtils { */ public static readonly randomGeneratorPool: string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + /** + * @type {string} + */ + public static readonly randomGeneratorPoolHexadecimal: string = 'abcdef0123456789'; + /** * @type {string} */ @@ -87,12 +92,10 @@ export class RandomGeneratorUtils { /** * @param length - * @param withPrefix - * @param unique * @returns {string} */ - public static getRandomVariableName (length: number, withPrefix: boolean, unique: boolean): string { - const prefix: string = withPrefix ? `_${Utils.hexadecimalPrefix}` : ''; + public static getRandomVariableName (length: number): string { + const prefix: string = `_${Utils.hexadecimalPrefix}`; const rangeMinInteger: number = 10000; const rangeMaxInteger: number = 99999999; const randomVariableName: string = `${prefix}${( @@ -101,8 +104,8 @@ export class RandomGeneratorUtils { ) ).substr(0, length)}`; - if (unique && RandomGeneratorUtils.randomVariableNameSet.has(randomVariableName)) { - return RandomGeneratorUtils.getRandomVariableName(length, withPrefix, unique); + if (RandomGeneratorUtils.randomVariableNameSet.has(randomVariableName)) { + return RandomGeneratorUtils.getRandomVariableName(length); } RandomGeneratorUtils.randomVariableNameSet.add(randomVariableName); diff --git a/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts b/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts index aba386ba..53cf160e 100644 --- a/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts +++ b/test/functional-tests/custom-nodes/console-output-nodes/ConsoleOutputDisableExpressionNode.spec.ts @@ -9,7 +9,7 @@ import { readFileAsString } from '../../../helpers/readFileAsString'; import { JavaScriptObfuscator } from '../../../../src/JavaScriptObfuscator'; describe('ConsoleOutputDisableExpressionNode', () => { - const regExp = /(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*)*'\]\['(\\x[a-f0-9]*)*'\] *= *_0x([a-z0-9]){4,6};){4}/; + const regExp = /(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*)*'\]\['(\\x[a-f0-9]*)*'\] *= *_0x([a-f0-9]){4,6};){4}/; it('should correctly append `ConsoleOutputDisableExpressionNode` custom node into the obfuscated code if `disableConsoleOutput` option is set', () => { let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( diff --git a/test/functional-tests/custom-nodes/domain-lock-nodes/DomainLockNode.spec.ts b/test/functional-tests/custom-nodes/domain-lock-nodes/DomainLockNode.spec.ts index e817ed39..194c92c3 100644 --- a/test/functional-tests/custom-nodes/domain-lock-nodes/DomainLockNode.spec.ts +++ b/test/functional-tests/custom-nodes/domain-lock-nodes/DomainLockNode.spec.ts @@ -18,7 +18,7 @@ describe('DomainLockNode', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /var _0x([a-z0-9]){4,6} *= *new RegExp/); + assert.match(obfuscationResult.getObfuscatedCode(), /var _0x([a-f0-9]){4,6} *= *new RegExp/); }); it('should\'t append `DomainLockNode` custom node into the obfuscated code if `domainLock` option is not set', () => { @@ -30,6 +30,6 @@ describe('DomainLockNode', () => { } ); - assert.notMatch(obfuscationResult.getObfuscatedCode(), /var _0x([a-z0-9]){4,6} *= *new RegExp/); + assert.notMatch(obfuscationResult.getObfuscatedCode(), /var _0x([a-f0-9]){4,6} *= *new RegExp/); }); }); diff --git a/test/functional-tests/custom-nodes/string-array-nodes/StringArrayCallsWrapper.spec.ts b/test/functional-tests/custom-nodes/string-array-nodes/StringArrayCallsWrapper.spec.ts index dd36bde8..75318a56 100644 --- a/test/functional-tests/custom-nodes/string-array-nodes/StringArrayCallsWrapper.spec.ts +++ b/test/functional-tests/custom-nodes/string-array-nodes/StringArrayCallsWrapper.spec.ts @@ -22,7 +22,7 @@ describe('StringArrayCallsWrapper', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6} *- *0x0\;/ + /_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6} *- *0x0\;/ ); }); }); diff --git a/test/functional-tests/custom-nodes/string-array-nodes/StringArrayNode.spec.ts b/test/functional-tests/custom-nodes/string-array-nodes/StringArrayNode.spec.ts index fd7b1b2c..bf061a23 100644 --- a/test/functional-tests/custom-nodes/string-array-nodes/StringArrayNode.spec.ts +++ b/test/functional-tests/custom-nodes/string-array-nodes/StringArrayNode.spec.ts @@ -19,7 +19,7 @@ describe('StringArrayNode', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /^var _0x([a-z0-9]){4} *= *\[/); + assert.match(obfuscationResult.getObfuscatedCode(), /^var _0x([a-f0-9]){4} *= *\[/); }); it('should\'t append `StringArrayNode` custom node into the obfuscated code if `stringArray` option is not set', () => { @@ -31,6 +31,6 @@ describe('StringArrayNode', () => { } ); - assert.notMatch(obfuscationResult.getObfuscatedCode(), /^var _0x([a-z0-9]){4} *= *\[/); + assert.notMatch(obfuscationResult.getObfuscatedCode(), /^var _0x([a-f0-9]){4} *= *\[/); }); }); diff --git a/test/functional-tests/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.spec.ts b/test/functional-tests/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.spec.ts index fcb5afec..e9a90efc 100644 --- a/test/functional-tests/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.spec.ts +++ b/test/functional-tests/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.spec.ts @@ -20,7 +20,7 @@ describe('StringArrayRotateFunctionNode', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /while *\(-- *_0x([a-z0-9]){4,6}\) *\{/); + assert.match(obfuscationResult.getObfuscatedCode(), /while *\(-- *_0x([a-f0-9]){4,6}\) *\{/); }); it('should\'t append `StringArrayRotateFunctionNode` custom node into the obfuscated code if `rotateStringArray` option is not set', () => { @@ -34,6 +34,6 @@ describe('StringArrayRotateFunctionNode', () => { } ); - assert.notMatch(obfuscationResult.getObfuscatedCode(), /while *\(-- *_0x([a-z0-9]){4,6}\) *\{/); + assert.notMatch(obfuscationResult.getObfuscatedCode(), /while *\(-- *_0x([a-f0-9]){4,6}\) *\{/); }); }); diff --git a/test/functional-tests/node-transformers/control-flow-transformers/block-statement-control-flow-transformer/BlockStatementControlFlowTransformer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/block-statement-control-flow-transformer/BlockStatementControlFlowTransformer.spec.ts index d8a3592a..28b67d17 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/block-statement-control-flow-transformer/BlockStatementControlFlowTransformer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/block-statement-control-flow-transformer/BlockStatementControlFlowTransformer.spec.ts @@ -28,11 +28,11 @@ describe('BlockStatementControlFlowTransformer', () => { const statementRegExp4: RegExp = /console\['log'\]\(0x4\);/; const statementRegExp5: RegExp = /console\['log'\]\(0x5\);/; - const switchCaseRegExp: RegExp = /switch *\(_0x([a-z0-9]){4,6}\[_0x([a-z0-9]){4,6}\+\+\]\) *\{/; + const switchCaseRegExp: RegExp = /switch *\(_0x([a-f0-9]){4,6}\[_0x([a-f0-9]){4,6}\+\+\]\) *\{/; const switchCaseLengthRegExp: RegExp = /case *'[0-5]': *console\['log'\]\(0x[0-6]\);/g; const switchCaseLength: number = obfuscatedCode.match(switchCaseLengthRegExp)!.length; - const switchCaseMapRegExp: RegExp = /var *_0x(?:[a-z0-9]){4,6} *= *'(.*?)'/; + const switchCaseMapRegExp: RegExp = /var *_0x(?:[a-f0-9]){4,6} *= *'(.*?)'/; const switchCaseMapMatches: RegExpMatchArray = obfuscatedCode.match(switchCaseMapRegExp); const switchCaseMapMatch: string = switchCaseMapMatches[1]; const switchCaseMap: string[] = switchCaseMapMatch.replace(/\\x7c/g, '|').split('|').sort(); @@ -73,11 +73,11 @@ describe('BlockStatementControlFlowTransformer', () => { const statementRegExp4: RegExp = /console\['log'\]\(0x4\);/; const statementRegExp5: RegExp = /console\['log'\]\(0x5\);/; - const switchCaseRegExp: RegExp = /switch *\(_0x([a-z0-9]){4,6}\[_0x([a-z0-9]){4,6}\+\+\]\) *\{/; + const switchCaseRegExp: RegExp = /switch *\(_0x([a-f0-9]){4,6}\[_0x([a-f0-9]){4,6}\+\+\]\) *\{/; const switchCaseLengthRegExp: RegExp = /case *'[0-5]': *console\['log'\]\(0x[0-6]\);/g; const switchCaseLength: number = obfuscatedCode.match(switchCaseLengthRegExp)!.length; - const switchCaseMapRegExp: RegExp = /var *_0x(?:[a-z0-9]){4,6} *= *'(.*?)'/; + const switchCaseMapRegExp: RegExp = /var *_0x(?:[a-f0-9]){4,6} *= *'(.*?)'/; const switchCaseMapMatches: RegExpMatchArray = obfuscatedCode.match(switchCaseMapRegExp); const switchCaseMapMatch: string = switchCaseMapMatches[1]; const switchCaseMap: string[] = switchCaseMapMatch.replace(/\\x7c/g, '|').split('|').sort(); @@ -129,7 +129,7 @@ describe('BlockStatementControlFlowTransformer', () => { ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const statementRegExp: RegExp = /^\(function *\( *\) *\{ *const *_0x([a-z0-9]){4,6} *= *0x1; *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/; + const statementRegExp: RegExp = /^\(function *\( *\) *\{ *const *_0x([a-f0-9]){4,6} *= *0x1; *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/; it('shouldn\'t transform block statement if block statement contain variable declaration with `const` kind', () => { assert.match(obfuscatedCode, statementRegExp); @@ -147,7 +147,7 @@ describe('BlockStatementControlFlowTransformer', () => { ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const statementRegExp: RegExp = /^\(function *\( *\) *\{ *let *_0x([a-z0-9]){4,6} *= *0x1; *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/; + const statementRegExp: RegExp = /^\(function *\( *\) *\{ *let *_0x([a-f0-9]){4,6} *= *0x1; *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/; it('shouldn\'t transform block statement if block statement contain variable declaration with `let` kind', () => { assert.match(obfuscatedCode, statementRegExp); @@ -201,7 +201,7 @@ describe('BlockStatementControlFlowTransformer', () => { ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const statementRegExp: RegExp = /^\(function *\( *\) *\{ *function *_0x([a-z0-9]){4,6} *\( *\) *\{ *\} *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/; + const statementRegExp: RegExp = /^\(function *\( *\) *\{ *function *_0x([a-f0-9]){4,6} *\( *\) *\{ *\} *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/; it('shouldn\'t transform block statement if block statement contain function declaration', () => { assert.match(obfuscatedCode, statementRegExp); @@ -221,7 +221,7 @@ describe('BlockStatementControlFlowTransformer', () => { } ); - const regExp1: RegExp = /switch *\(_0x([a-z0-9]){4,6}\[_0x([a-z0-9]){4,6}\+\+\]\) *\{/g; + const regExp1: RegExp = /switch *\(_0x([a-f0-9]){4,6}\[_0x([a-f0-9]){4,6}\+\+\]\) *\{/g; const regExp2: RegExp = /\(function *\( *\) *\{ *console\['(\\x[a-f0-9]*){3}'\]\(0x1\);/g; const transformedStatementMatchesLength = obfuscationResult.getObfuscatedCode().match(regExp1)!.length; const untouchedStatementMatchesLength = obfuscationResult.getObfuscatedCode().match(regExp2)!.length; diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts index b62abade..d157e645 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec.ts @@ -20,7 +20,7 @@ describe('BinaryExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(0x1, *0x2\);/; + const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(0x1, *0x2\);/; it('should replace binary expression node by call to control flow storage node', () => { assert.match(obfuscatedCode, controlFlowStorageCallRegExp); @@ -47,8 +47,8 @@ describe('BinaryExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp1: RegExp = /var *_0x([a-z0-9]){4,6} *= *(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(0x1, *0x2\);/; - const controlFlowStorageCallRegExp2: RegExp = /var *_0x([a-z0-9]){4,6} *= *(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(0x2, *0x3\);/; + const controlFlowStorageCallRegExp1: RegExp = /var *_0x([a-f0-9]){4,6} *= *(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(0x1, *0x2\);/; + const controlFlowStorageCallRegExp2: RegExp = /var *_0x([a-f0-9]){4,6} *= *(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(0x2, *0x3\);/; const firstMatchArray: RegExpMatchArray | null = obfuscatedCode.match(controlFlowStorageCallRegExp1); const secondMatchArray: RegExpMatchArray | null = obfuscatedCode.match(controlFlowStorageCallRegExp2); diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts index 8f022fb1..97984d9a 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec.ts @@ -20,7 +20,7 @@ describe('CallExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(_0x([a-z0-9]){4,6}, *0x1, *0x2\);/; + const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(_0x([a-f0-9]){4,6}, *0x1, *0x2\);/; it('should replace call expression node by call to control flow storage node', () => { assert.match(obfuscatedCode, controlFlowStorageCallRegExp); @@ -47,8 +47,8 @@ describe('CallExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp1: RegExp = /var *_0x([a-z0-9]){4,6} *= *(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(_0x([a-z0-9]){4,6}, *0x1, *0x2\);/; - const controlFlowStorageCallRegExp2: RegExp = /var *_0x([a-z0-9]){4,6} *= *(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(_0x([a-z0-9]){4,6}, *0x2, *0x3\);/; + const controlFlowStorageCallRegExp1: RegExp = /var *_0x([a-f0-9]){4,6} *= *(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(_0x([a-f0-9]){4,6}, *0x1, *0x2\);/; + const controlFlowStorageCallRegExp2: RegExp = /var *_0x([a-f0-9]){4,6} *= *(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(_0x([a-f0-9]){4,6}, *0x2, *0x3\);/; const firstMatchArray: RegExpMatchArray | null = obfuscatedCode.match(controlFlowStorageCallRegExp1); const secondMatchArray: RegExpMatchArray | null = obfuscatedCode.match(controlFlowStorageCallRegExp2); @@ -80,7 +80,7 @@ describe('CallExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6}\['\\x73\\x75\\x6d'\]\(0x1, *0x2\);/; + const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['\\x73\\x75\\x6d'\]\(0x1, *0x2\);/; it('shouldn\'t replace call expression node by call to control flow storage node if call expression callee is member expression node', () => { assert.match(obfuscatedCode, controlFlowStorageCallRegExp); diff --git a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts index c200be9b..f03cd37f 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec.ts @@ -20,7 +20,7 @@ describe('LogicalExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(!!\[\], *!\[\]\);/; + const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(!!\[\], *!\[\]\);/; it('should replace logical expression node by call to control flow storage node', () => { assert.match(obfuscatedCode, controlFlowStorageCallRegExp); @@ -47,8 +47,8 @@ describe('LogicalExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp1: RegExp = /var *_0x([a-z0-9]){4,6} *= *(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(!!\[\], *!\[\]\);/; - const controlFlowStorageCallRegExp2: RegExp = /var *_0x([a-z0-9]){4,6} *= *(_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(!\[\], *!!\[\]\);/; + const controlFlowStorageCallRegExp1: RegExp = /var *_0x([a-f0-9]){4,6} *= *(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(!!\[\], *!\[\]\);/; + const controlFlowStorageCallRegExp2: RegExp = /var *_0x([a-f0-9]){4,6} *= *(_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\])\(!\[\], *!!\[\]\);/; const firstMatchArray: RegExpMatchArray | null = obfuscatedCode.match(controlFlowStorageCallRegExp1); const secondMatchArray: RegExpMatchArray | null = obfuscatedCode.match(controlFlowStorageCallRegExp2); @@ -80,7 +80,7 @@ describe('LogicalExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(!_0x([a-z0-9]){4,6}, *!_0x([a-z0-9]){4,6}\);/; + const controlFlowStorageCallRegExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\['(\\x[a-f0-9]*){3}'\]\(!_0x([a-f0-9]){4,6}, *!_0x([a-f0-9]){4,6}\);/; it('should replace logical expression node with unary expression by call to control flow storage node', () => { assert.match(obfuscatedCode, controlFlowStorageCallRegExp); @@ -97,7 +97,7 @@ describe('LogicalExpressionControlFlowReplacer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const regExp: RegExp = /var *_0x([a-z0-9]){4,6} *= *_0x([a-z0-9]){4,6}\[_0x([a-z0-9]){4,6}\] *&& *!\[\];/; + const regExp: RegExp = /var *_0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\[_0x([a-f0-9]){4,6}\] *&& *!\[\];/; it('shouldn\'t replace prohibited expression nodes', () => { assert.match(obfuscatedCode, regExp); diff --git a/test/functional-tests/node-transformers/control-flow-transformers/function-control-flow-transformer/FunctionControlFlowTransformer.spec.ts b/test/functional-tests/node-transformers/control-flow-transformers/function-control-flow-transformer/FunctionControlFlowTransformer.spec.ts index de1ae2bf..f7fab1f7 100644 --- a/test/functional-tests/node-transformers/control-flow-transformers/function-control-flow-transformer/FunctionControlFlowTransformer.spec.ts +++ b/test/functional-tests/node-transformers/control-flow-transformers/function-control-flow-transformer/FunctionControlFlowTransformer.spec.ts @@ -9,7 +9,7 @@ import { readFileAsString } from '../../../../helpers/readFileAsString'; import { JavaScriptObfuscator } from '../../../../../src/JavaScriptObfuscator'; describe('FunctionControlFlowTransformer', () => { - const variableMatch: string = '_0x([a-z0-9]){4,6}'; + const variableMatch: string = '_0x([a-f0-9]){4,6}'; const rootControlFlowStorageNodeMatch: string = `` + `var *${variableMatch} *= *\\{` + `'(\\\\x[a-f0-9]*){3}' *: *function *${variableMatch} *\\(${variableMatch}, *${variableMatch}\\) *\\{` + @@ -171,7 +171,7 @@ describe('FunctionControlFlowTransformer', () => { ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); const controlFlowStorageMatch: RegExp = new RegExp(rootControlFlowStorageNodeMatch); - const regexp: RegExp = /var *_0x([a-z0-9]){4,6} *= *0x1 *\+ *0x2;/; + const regexp: RegExp = /var *_0x([a-f0-9]){4,6} *= *0x1 *\+ *0x2;/; it('shouldn\'t add `control flow storage` node to the obfuscated code when threshold is 0', () => { assert.match(obfuscatedCode, regexp); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts index b058534d..29f457ae 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts @@ -17,8 +17,8 @@ describe('CatchClauseTransformer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const paramNameRegExp: RegExp = /catch *\((_0x([a-z0-9]){4,6})\) *\{/; - const bodyParamNameRegExp: RegExp = /console\['\\x6c\\x6f\\x67'\]\((_0x([a-z0-9]){4,6})\);/; + const paramNameRegExp: RegExp = /catch *\((_0x([a-f0-9]){4,6})\) *\{/; + const bodyParamNameRegExp: RegExp = /console\['\\x6c\\x6f\\x67'\]\((_0x([a-f0-9]){4,6})\);/; it('should transform catch clause node', () => { assert.match(obfuscatedCode, paramNameRegExp); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts index 3484cef2..f7bbcd1d 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec.ts @@ -32,9 +32,9 @@ describe('FunctionDeclarationTransformer', () => { it('should transform function name if `functionDeclaration` parent block scope is not a `ProgramNode`', () => { const functionNameIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/function *_0x[a-z0-9]{4,6} *\(\) *\{/); + .match(/function *_0x[a-f0-9]{4,6} *\(\) *\{/); const functionCallIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/_0x[a-z0-9]{4,6} *\( *\);/); + .match(/_0x[a-f0-9]{4,6} *\( *\);/); const functionParamIdentifierName: string = (functionNameIdentifierMatch)[1]; const functionBodyIdentifierName: string = (functionCallIdentifierMatch)[1]; diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts index 6b7064bc..e6e30464 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts @@ -20,9 +20,9 @@ describe('FunctionTransformer', () => { it('should correct transform both function parameter identifier and function body identifier with same name', () => { const functionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/var _0x[a-z0-9]{4,6} *= *function *\((_0x[a-z0-9]{4,6})\) *\{/); + .match(/var _0x[a-f0-9]{4,6} *= *function *\((_0x[a-f0-9]{4,6})\) *\{/); const functionBodyIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-z0-9]{4,6})\)/); + .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); const functionParamIdentifierName: string = (functionParamIdentifierMatch)[1]; const functionBodyIdentifierName: string = (functionBodyIdentifierMatch)[1]; diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts index 06c4ca64..e8a56b92 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec.ts @@ -17,9 +17,9 @@ describe('LabeledStatementTransformer', () => { } ); const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const labeledStatementRegExp: RegExp = /(_0x([a-z0-9]){4,6}): *\{/; - const continueStatementRegExp: RegExp = /continue *(_0x([a-z0-9]){4,6});/; - const breakStatementRegExp: RegExp = /break *(_0x([a-z0-9]){4,6});/; + const labeledStatementRegExp: RegExp = /(_0x([a-f0-9]){4,6}): *\{/; + const continueStatementRegExp: RegExp = /continue *(_0x([a-f0-9]){4,6});/; + const breakStatementRegExp: RegExp = /break *(_0x([a-f0-9]){4,6});/; it('should transform `labeledStatement` identifier', () => { assert.match(obfuscatedCode, labeledStatementRegExp); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec.ts index 06034920..95a6f6ef 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec.ts @@ -33,9 +33,9 @@ describe('LiteralTransformer', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /^var *_0x([a-z0-9]){4} *= *\['\\x74\\x65\\x73\\x74'\];/ + /^var *_0x([a-f0-9]){4} *= *\['\\x74\\x65\\x73\\x74'\];/ ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-z0-9]){4}\('0x0'\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-f0-9]){4}\('0x0'\);/); }); it('should create only one item in string array for same literal node values', () => { @@ -50,9 +50,9 @@ describe('LiteralTransformer', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /^var *_0x([a-z0-9]){4} *= *\['\\x74\\x65\\x73\\x74'\];/ + /^var *_0x([a-f0-9]){4} *= *\['\\x74\\x65\\x73\\x74'\];/ ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-z0-9]){4}\('0x0'\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-f0-9]){4}\('0x0'\);/); }); it('should replace literal node value with raw value from string array if `unicodeEscapeSequence` is disabled', () => { @@ -68,9 +68,9 @@ describe('LiteralTransformer', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /^var *_0x([a-z0-9]){4} *= *\['test'\];/ + /^var *_0x([a-f0-9]){4} *= *\['test'\];/ ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-z0-9]){4}\('0x0'\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-f0-9]){4}\('0x0'\);/); }); it('should replace literal node value with raw value from string array if `unicodeEscapeSequence` and `stringArray` are disabled', () => { @@ -126,9 +126,9 @@ describe('LiteralTransformer', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /^var *_0x([a-z0-9]){4} *= *\['\\x64\\x47\\x56\\x7a\\x64\\x41\\x3d\\x3d'\];/ + /^var *_0x([a-f0-9]){4} *= *\['\\x64\\x47\\x56\\x7a\\x64\\x41\\x3d\\x3d'\];/ ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-z0-9]){4}\('0x0'\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *_0x([a-f0-9]){4}\('0x0'\);/); }); it('should replace literal node value with value from string array encoded using rc4', () => { @@ -144,7 +144,7 @@ describe('LiteralTransformer', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /var *test *= *_0x([a-z0-9]){4}\('0x0', '(\\x[a-f0-9]*){4}'\);/ + /var *test *= *_0x([a-f0-9]){4}\('0x0', '(\\x[a-f0-9]*){4}'\);/ ); }); @@ -161,7 +161,7 @@ describe('LiteralTransformer', () => { } ); - const regExp1: RegExp = /var *test *= *_0x([a-z0-9]){4}\('0x0'\);/g; + const regExp1: RegExp = /var *test *= *_0x([a-f0-9]){4}\('0x0'\);/g; const regExp2: RegExp = /var *test *= *'\\x74\\x65\\x73\\x74';/g; const stringArrayMatchesLength = obfuscationResult.getObfuscatedCode().match(regExp1)!.length; const noStringArrayMatchesLength = obfuscationResult.getObfuscatedCode().match(regExp2)!.length; diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts index dd8fcb7f..7a396186 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts @@ -31,8 +31,8 @@ describe('MemberExpressionTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-z0-9]){4} *= *\['\\x6c\\x6f\\x67'\];/); - assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *console\[_0x([a-z0-9]){4}\('0x0'\)\];/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-f0-9]){4} *= *\['\\x6c\\x6f\\x67'\];/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *console\[_0x([a-f0-9]){4}\('0x0'\)\];/); }); }); @@ -47,8 +47,8 @@ describe('MemberExpressionTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-z0-9]){4} *= *\['\\x6c\\x6f\\x67'\];/); - assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *console\[_0x([a-z0-9]){4}\('0x0'\)\];/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-f0-9]){4} *= *\['\\x6c\\x6f\\x67'\];/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *test *= *console\[_0x([a-f0-9]){4}\('0x0'\)\];/); }); it('should ignore square brackets call with identifier value', () => { diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts index 36e28ed8..95a06efc 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts @@ -32,8 +32,8 @@ describe('MethodDefinitionTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-z0-9]){4} *= *\['\\x62\\x61\\x72'\];/); - assert.match(obfuscationResult.getObfuscatedCode(), /\[_0x([a-z0-9]){4}\('0x0'\)\]\(\)\{\}/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-f0-9]){4} *= *\['\\x62\\x61\\x72'\];/); + assert.match(obfuscationResult.getObfuscatedCode(), /\[_0x([a-f0-9]){4}\('0x0'\)\]\(\)\{\}/); }); it('should not transform method definition node with `constructor` key', () => { diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts index 7a76a684..14062ed4 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec.ts @@ -41,7 +41,7 @@ describe('ObjectExpressionTransformer', () => { assert.match( obfuscationResult.getObfuscatedCode(), - /var *_0x[a-z0-9]{4,6} *= *\{'\\x61': *_0x[a-z0-9]{4,6}\, *'\\x62': *_0x[a-z0-9]{4,6}\};/ + /var *_0x[a-f0-9]{4,6} *= *\{'\\x61': *_0x[a-f0-9]{4,6}\, *'\\x62': *_0x[a-f0-9]{4,6}\};/ ); }); }); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts index 68dd8e19..be5f9775 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts @@ -17,8 +17,8 @@ describe('VariableDeclarationTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-z0-9]){4,6} *= *'\\x61\\x62\\x63';/); - assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-z0-9]){4,6}\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /var *_0x([a-f0-9]){4,6} *= *'\\x61\\x62\\x63';/); + assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-f0-9]){4,6}\);/); }); it('should not transform `variableDeclaration` node if parent block scope node is `Program` node', () => { @@ -41,7 +41,7 @@ describe('VariableDeclarationTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-z0-9]){4,6}\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-f0-9]){4,6}\);/); }); it('should not transform variable call (`identifier` node) outside of block scope of node in which this variable was declared with `let` kind', () => { @@ -68,11 +68,11 @@ describe('VariableDeclarationTransformer', () => { }); it('should transform variable call (`identifier` node) before variable declaration if this call is inside function body', () => { - assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-z0-9]){4,6}\['\\x69\\x74\\x65\\x6d'\]\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-f0-9]){4,6}\['\\x69\\x74\\x65\\x6d'\]\);/); }); it('should not transform variable call (`identifier` node) before variable declaration', () => { - assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-z0-9]){4,6}\);/); + assert.match(obfuscationResult.getObfuscatedCode(), /console\['\\x6c\\x6f\\x67'\]\(_0x([a-f0-9]){4,6}\);/); }); }); @@ -96,15 +96,15 @@ describe('VariableDeclarationTransformer', () => { it('should correct transform variables inside function body', () => { const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); const functionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/function *_0x[a-z0-9]{4,6} *\((_0x[a-z0-9]{4,6})\,(_0x[a-z0-9]{4,6})\) *\{/); + .match(/function *_0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\,(_0x[a-f0-9]{4,6})\) *\{/); const innerFunctionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/function _0x[a-z0-9]{4,6} *\((_0x[a-z0-9]{4,6})\) *\{/); + .match(/function _0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\) *\{/); const constructorIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-z0-9]{4,6})\)/); + .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); const objectIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/return\{'\\x74':(_0x[a-z0-9]{4,6})\}/); + .match(/return\{'\\x74':(_0x[a-f0-9]{4,6})\}/); const variableDeclarationIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/var *(_0x[a-z0-9]{4,6});/); + .match(/var *(_0x[a-f0-9]{4,6});/); functionParamIdentifierName = (functionParamIdentifierMatch)[1]; innerFunctionParamIdentifierName = (innerFunctionParamIdentifierMatch)[1]; @@ -132,7 +132,7 @@ describe('VariableDeclarationTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /var _0x([a-z0-9]){4,6} *= *\{'\\x74\\x65\\x73\\x74/); + assert.match(obfuscationResult.getObfuscatedCode(), /var _0x([a-f0-9]){4,6} *= *\{'\\x74\\x65\\x73\\x74/); }); it('shouldn\'t replace computed member expression identifier', () => { @@ -143,7 +143,7 @@ describe('VariableDeclarationTransformer', () => { } ); - assert.match(obfuscationResult.getObfuscatedCode(), /_0x([a-z0-9]){4,6}\['\\x74\\x65\\x73\\x74'\]/); + assert.match(obfuscationResult.getObfuscatedCode(), /_0x([a-f0-9]){4,6}\['\\x74\\x65\\x73\\x74'\]/); }); }); }); diff --git a/test/unit-tests/utils/random-generator-utils/RandomGeneratorUtils.spec.ts b/test/unit-tests/utils/random-generator-utils/RandomGeneratorUtils.spec.ts index 33eb882a..89f0ce41 100644 --- a/test/unit-tests/utils/random-generator-utils/RandomGeneratorUtils.spec.ts +++ b/test/unit-tests/utils/random-generator-utils/RandomGeneratorUtils.spec.ts @@ -5,8 +5,8 @@ import { RandomGeneratorUtils } from '../../../../src/utils/RandomGeneratorUtils describe('RandomGeneratorUtils', () => { describe('getRandomVariableName (length: number = 6): string', () => { it('should return a string of given length with random variable name', () => { - assert.match(RandomGeneratorUtils.getRandomVariableName(4, true, false), /^_0x(\w){4}$/); - assert.match(RandomGeneratorUtils.getRandomVariableName(6, true, true), /^_0x(\w){4,6}$/); + assert.match(RandomGeneratorUtils.getRandomVariableName(4), /^_0x(\w){4}$/); + assert.match(RandomGeneratorUtils.getRandomVariableName(6), /^_0x(\w){4,6}$/); }); }); }); From 326f4c026856e16aff170eb3a1286c6a7ab14bf9 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Tue, 10 Jan 2017 19:04:49 +0300 Subject: [PATCH 05/11] BlockStatementControlFlowTransformers small performance fix --- dist/index.js | 19 +++++----------- .../BlockStatementControlFlowTransformer.ts | 6 ++--- src/node/Node.ts | 22 ++----------------- src/node/NodeUtils.ts | 3 ++- 4 files changed, 12 insertions(+), 38 deletions(-) diff --git a/dist/index.js b/dist/index.js index 44c99405..722ef773 100644 --- a/dist/index.js +++ b/dist/index.js @@ -201,6 +201,7 @@ var esprima = __webpack_require__(49); var estraverse = __webpack_require__(18); var NodeType_1 = __webpack_require__(15); var Node_1 = __webpack_require__(12); +var Nodes_1 = __webpack_require__(22); var NodeUtils = function () { function NodeUtils() { @@ -333,7 +334,7 @@ var NodeUtils = function () { if (node.type === NodeType_1.NodeType.Program) { value = node; } else { - value = Node_1.Node.getProgramNode([node]); + value = Nodes_1.Nodes.getProgramNode([node]); value.parentNode = value; } isRootNode = false; @@ -562,16 +563,6 @@ var Node = function () { } (0, _createClass3.default)(Node, null, [{ - key: "getProgramNode", - value: function getProgramNode(bodyNode) { - return { - 'type': NodeType_1.NodeType.Program, - 'body': bodyNode, - 'sourceType': 'script', - 'obfuscated': false - }; - } - }, { key: "isArrowFunctionExpressionNode", value: function isArrowFunctionExpressionNode(node) { return node.type === NodeType_1.NodeType.ArrowFunctionExpression; @@ -5117,14 +5108,14 @@ var BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_ return blockStatementNode; } var blockStatementBody = blockStatementNode.body; + if (blockStatementBody.length <= 4) { + return blockStatementNode; + } var originalKeys = [].concat((0, _toConsumableArray3.default)(Array(blockStatementBody.length).keys())); var shuffledKeys = Utils_1.Utils.arrayShuffle(originalKeys); var originalKeysIndexesInShuffledArray = originalKeys.map(function (key) { return shuffledKeys.indexOf(key); }); - if (blockStatementBody.length <= 4) { - return blockStatementNode; - } var blockStatementControlFlowFlatteningCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.BlockStatementControlFlowFlatteningNode); blockStatementControlFlowFlatteningCustomNode.initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray); return blockStatementControlFlowFlatteningCustomNode.getNode()[0]; diff --git a/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts b/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts index 8c150041..df9c6fe8 100644 --- a/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts +++ b/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts @@ -62,14 +62,14 @@ export class BlockStatementControlFlowTransformer extends AbstractNodeTransforme } const blockStatementBody: ESTree.Statement[] = blockStatementNode.body; - const originalKeys: number[] = [...Array(blockStatementBody.length).keys()]; - const shuffledKeys: number[] = Utils.arrayShuffle(originalKeys); - const originalKeysIndexesInShuffledArray: number[] = originalKeys.map((key: number) => shuffledKeys.indexOf(key)); if (blockStatementBody.length <= 4) { return blockStatementNode; } + const originalKeys: number[] = [...Array(blockStatementBody.length).keys()]; + const shuffledKeys: number[] = Utils.arrayShuffle(originalKeys); + const originalKeysIndexesInShuffledArray: number[] = originalKeys.map((key: number) => shuffledKeys.indexOf(key)); const blockStatementControlFlowFlatteningCustomNode: ICustomNode = this.customNodeFactory( CustomNodes.BlockStatementControlFlowFlatteningNode ); diff --git a/src/node/Node.ts b/src/node/Node.ts index 89f16bf7..046f092d 100644 --- a/src/node/Node.ts +++ b/src/node/Node.ts @@ -1,24 +1,10 @@ import * as ESTree from 'estree'; import { TNodeWithBlockStatement } from '../types/node/TNodeWithBlockStatement'; -import { TStatement } from '../types/node/TStatement'; import { NodeType } from '../enums/NodeType'; export class Node { - /** - * @param bodyNode - * @returns ESTree.Program - */ - public static getProgramNode (bodyNode: TStatement[]): ESTree.Program { - return { - 'type': NodeType.Program, - 'body': bodyNode, - 'sourceType': 'script', - 'obfuscated': false - }; - } - /** * @param node * @returns {boolean} @@ -109,9 +95,7 @@ export class Node { const parentNodeIsContinueStatementNode: boolean = Node.isContinueStatementNode(parentNode) && parentNode.label === node; const parentNodeIsBreakStatementNode: boolean = Node.isBreakStatementNode(parentNode) && parentNode.label === node; - return parentNodeIsLabeledStatementNode || - parentNodeIsContinueStatementNode || - parentNodeIsBreakStatementNode; + return parentNodeIsLabeledStatementNode || parentNodeIsContinueStatementNode || parentNodeIsBreakStatementNode; } /** @@ -181,9 +165,7 @@ export class Node { parentNode.property === node ); - return !parentNodeIsPropertyNode && - !parentNodeIsMemberExpressionNode && - !Node.isLabelIdentifierNode(node, parentNode); + return !parentNodeIsPropertyNode && !parentNodeIsMemberExpressionNode && !Node.isLabelIdentifierNode(node, parentNode); } /** diff --git a/src/node/NodeUtils.ts b/src/node/NodeUtils.ts index 14e95125..fb4edfaa 100644 --- a/src/node/NodeUtils.ts +++ b/src/node/NodeUtils.ts @@ -9,6 +9,7 @@ import { TStatement } from '../types/node/TStatement'; import { NodeType } from '../enums/NodeType'; import { Node } from './Node'; +import { Nodes } from './Nodes'; export class NodeUtils { /** @@ -166,7 +167,7 @@ export class NodeUtils { if (node.type === NodeType.Program) { value = node; } else { - value = Node.getProgramNode([node]); + value = Nodes.getProgramNode([node]); value.parentNode = value; } From 1486717ec58d61b4fe9840149a60dfc007b40061 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Tue, 10 Jan 2017 21:48:36 +0300 Subject: [PATCH 06/11] dependencies update --- dist/index.js | 53 +++++++++++++++++++++++++-------------------------- package.json | 26 ++++++++++++------------- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/dist/index.js b/dist/index.js index 722ef773..ca8572a3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -90,7 +90,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 151); +/******/ return __webpack_require__(__webpack_require__.s = 150); /******/ }) /************************************************************************/ /******/ ([ @@ -182,7 +182,7 @@ module.exports = require("babel-runtime/helpers/possibleConstructorReturn"); "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -201,7 +201,7 @@ var esprima = __webpack_require__(49); var estraverse = __webpack_require__(18); var NodeType_1 = __webpack_require__(15); var Node_1 = __webpack_require__(12); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils = function () { function NodeUtils() { @@ -755,7 +755,7 @@ var _slicedToArray2 = __webpack_require__(35); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -1057,12 +1057,6 @@ var NodeObfuscatorsReplacers; /***/ }, /* 21 */ -/***/ function(module, exports) { - -module.exports = require("babel-runtime/core-js/get-iterator"); - -/***/ }, -/* 22 */ /***/ function(module, exports, __webpack_require__) { "use strict"; @@ -1395,6 +1389,12 @@ var Nodes = function () { exports.Nodes = Nodes; +/***/ }, +/* 22 */ +/***/ function(module, exports) { + +module.exports = require("babel-runtime/core-js/get-iterator"); + /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { @@ -1469,7 +1469,7 @@ exports.JavaScriptObfuscator = JavaScriptObfuscator; "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -3403,7 +3403,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var BinaryExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -3467,7 +3467,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var BlockStatementControlFlowFlatteningNode = function (_AbstractCustomNode_) { @@ -3541,7 +3541,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils_1 = __webpack_require__(8); var RandomGeneratorUtils_1 = __webpack_require__(9); var CallExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -3611,7 +3611,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var RandomGeneratorUtils_1 = __webpack_require__(9); var NodeUtils_1 = __webpack_require__(8); var LogicalExpressionFunctionNode = function (_AbstractCustomNode_) { @@ -3679,7 +3679,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils_1 = __webpack_require__(8); var CallExpressionControlFlowStorageCallNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(CallExpressionControlFlowStorageCallNode, _AbstractCustomNode_); @@ -3756,7 +3756,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils_1 = __webpack_require__(8); var ControlFlowStorageNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(ControlFlowStorageNode, _AbstractCustomNode_); @@ -3825,7 +3825,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); var AbstractCustomNode_1 = __webpack_require__(13); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var NodeUtils_1 = __webpack_require__(8); var ExpressionWithOperatorControlFlowStorageCallNode = function (_AbstractCustomNode_) { (0, _inherits3.default)(ExpressionWithOperatorControlFlowStorageCallNode, _AbstractCustomNode_); @@ -5582,7 +5582,7 @@ exports.CatchClauseTransformer = CatchClauseTransformer; "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -6220,7 +6220,7 @@ var ObjectExpressionTransformer_1; "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -6251,7 +6251,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var Nodes_1 = __webpack_require__(22); +var Nodes_1 = __webpack_require__(21); var TemplateLiteralTransformer = TemplateLiteralTransformer_1 = function (_AbstractNodeTransfor) { (0, _inherits3.default)(TemplateLiteralTransformer, _AbstractNodeTransfor); @@ -6355,7 +6355,7 @@ var TemplateLiteralTransformer_1; "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -6899,7 +6899,7 @@ var Options_1; "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -7084,7 +7084,7 @@ exports.OptionsNormalizer = OptionsNormalizer; "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -7426,7 +7426,7 @@ exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtr "use strict"; -var _getIterator2 = __webpack_require__(21); +var _getIterator2 = __webpack_require__(22); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -8152,8 +8152,7 @@ module.exports = require("mkdirp"); module.exports = require("reflect-metadata"); /***/ }, -/* 150 */, -/* 151 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { "use strict"; diff --git a/package.json b/package.json index f2cd0521..95da333c 100644 --- a/package.json +++ b/package.json @@ -20,21 +20,21 @@ "javascript-obfuscator": "./bin/javascript-obfuscator.js" }, "dependencies": { - "babel-polyfill": "^6.20.0", - "babel-runtime": "^6.20.0", + "babel-polyfill": "6.20.0", + "babel-runtime": "6.20.0", "chance": "1.0.4", "class-validator": "0.6.8", "commander": "2.9.0", "escodegen": "1.8.1", "esprima": "3.1.3", "estraverse": "4.2.0", - "inversify": "^3.0.0-rc.4", - "lodash": "^4.17.4", + "inversify": "3.0.0-rc.4", + "lodash": "4.17.4", "mkdirp": "0.5.1", - "reflect-metadata": "^0.1.9", + "reflect-metadata": "0.1.9", "source-map-support": "0.4.8", - "string-template": "^1.0.0", - "tslib": "^1.5.0" + "string-template": "1.0.0", + "tslib": "1.5.0" }, "devDependencies": { "@types/chai": "3.4.34", @@ -44,16 +44,16 @@ "@types/esprima": "2.1.33", "@types/estraverse": "0.0.6", "@types/estree": "0.0.34", - "@types/lodash": "^4.14.47", + "@types/lodash": "4.14.48", "@types/mkdirp": "0.3.29", - "@types/mocha": "2.2.36", - "@types/node": "6.0.58", + "@types/mocha": "2.2.37", + "@types/node": "6.0.59", "@types/sinon": "1.16.34", "@types/string-template": "1.0.2", - "awesome-typescript-loader": "3.0.0-beta.17", + "awesome-typescript-loader": "3.0.0-beta.18", "babel-cli": "6.18.0", "babel-loader": "6.2.10", - "babel-plugin-transform-runtime": "^6.15.0", + "babel-plugin-transform-runtime": "6.15.0", "babel-preset-es2015": "6.18.0", "chai": "4.0.0-canary.1", "coveralls": "2.11.15", @@ -62,7 +62,7 @@ "sinon": "2.0.0-pre.4", "ts-node": "2.0.0", "tslint": "4.3.1", - "tslint-loader": "^3.3.0", + "tslint-loader": "3.3.0", "typescript": "2.1.4", "webpack": "2.2.0-rc.3", "webpack-node-externals": "1.5.4" From fcdb90348f4ee0ed261ef8409233acfd588e917c Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Tue, 10 Jan 2017 22:46:56 +0300 Subject: [PATCH 07/11] update readme with changes from 0.8.4 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c1418b9..991941cf 100644 --- a/README.md +++ b/README.md @@ -298,7 +298,7 @@ If checked, an interval is used to force the debug mode on the Console tab, maki ### `disableConsoleOutput` Type: `boolean` Default: `true` -Disables the use of `console.log`, `console.info`, `console.error` and `console.warn` by replacing them with empty functions. This makes the use of the debugger harder. +Disables the use of `console.log`, `console.info`, `console.error`, `console.warn`, `console.debug`, `console.exception` and `console.trace` by replacing them with empty functions. This makes the use of the debugger harder. ### `domainLock` Type: `string[]` Default: `[]` From 5c1215801a3c33ab7e52215d665ea6365e01cbb5 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Wed, 11 Jan 2017 22:49:25 +0300 Subject: [PATCH 08/11] fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/29 --- dist/index.js | 23 ++++++++----------- .../FunctionTransformer.ts | 8 +++---- .../VariableDeclarationTransformer.ts | 6 ++--- .../FunctionTransformer.spec.ts | 18 +++++++++++++++ .../fixtures/object-pattern-as-argument.js | 5 ++++ .../VariableDeclarationTransformer.spec.ts | 18 +++++++++++++++ .../fixtures/object-pattern.js | 4 ++++ 7 files changed, 60 insertions(+), 22 deletions(-) create mode 100644 test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-argument.js create mode 100644 test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js diff --git a/dist/index.js b/dist/index.js index ca8572a3..f48a07a3 100644 --- a/dist/index.js +++ b/dist/index.js @@ -90,7 +90,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 150); +/******/ return __webpack_require__(__webpack_require__.s = 151); /******/ }) /************************************************************************/ /******/ ([ @@ -5747,10 +5747,8 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(18); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(8); var FunctionTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(FunctionTransformer, _AbstractNodeTransfor); @@ -5777,11 +5775,9 @@ var FunctionTransformer = function (_AbstractNodeTransfor) { var _this2 = this; functionNode.params.forEach(function (paramsNode) { - NodeUtils_1.NodeUtils.typedTraverse(paramsNode, NodeType_1.NodeType.Identifier, { - enter: function enter(node) { - return _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); - } - }); + if (Node_1.Node.isIdentifierNode(paramsNode)) { + _this2.identifierReplacer.storeNames(paramsNode.name, nodeIdentifier); + } }); } }, { @@ -6426,11 +6422,9 @@ var VariableDeclarationTransformer = function (_AbstractNodeTransfor) { var _this2 = this; variableDeclarationNode.declarations.forEach(function (declarationNode) { - NodeUtils_1.NodeUtils.typedTraverse(declarationNode.id, NodeType_1.NodeType.Identifier, { - enter: function enter(node) { - return _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); - } - }); + if (Node_1.Node.isIdentifierNode(declarationNode.id)) { + _this2.identifierReplacer.storeNames(declarationNode.id.name, nodeIdentifier); + } }); } }, { @@ -8152,7 +8146,8 @@ module.exports = require("mkdirp"); module.exports = require("reflect-metadata"); /***/ }, -/* 150 */ +/* 150 */, +/* 151 */ /***/ function(module, exports, __webpack_require__) { "use strict"; diff --git a/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts b/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts index 0a53f4bc..2a3f6e84 100644 --- a/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/FunctionTransformer.ts @@ -9,11 +9,9 @@ import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfusc import { IObfuscationReplacerWithStorage } from '../../interfaces/node-transformers/IObfuscationReplacerWithStorage'; import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers'; -import { NodeType } from '../../enums/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; -import { NodeUtils } from '../../node/NodeUtils'; /** * replaces: @@ -63,9 +61,9 @@ export class FunctionTransformer extends AbstractNodeTransformer { private storeFunctionParams (functionNode: ESTree.Function, nodeIdentifier: number): void { functionNode.params .forEach((paramsNode: ESTree.Node) => { - NodeUtils.typedTraverse(paramsNode, NodeType.Identifier, { - enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier) - }); + if (Node.isIdentifierNode(paramsNode)) { + this.identifierReplacer.storeNames(paramsNode.name, nodeIdentifier); + } }); } diff --git a/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts b/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts index 505560dd..fdd0ec03 100644 --- a/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/VariableDeclarationTransformer.ts @@ -83,9 +83,9 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer { private storeVariableNames (variableDeclarationNode: ESTree.VariableDeclaration, nodeIdentifier: number): void { variableDeclarationNode.declarations .forEach((declarationNode: ESTree.VariableDeclarator) => { - NodeUtils.typedTraverse(declarationNode.id, NodeType.Identifier, { - enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier) - }); + if (Node.isIdentifierNode(declarationNode.id)) { + this.identifierReplacer.storeNames(declarationNode.id.name, nodeIdentifier); + } }); } diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts index e6e30464..d15b97b3 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts @@ -34,4 +34,22 @@ describe('FunctionTransformer', () => { assert.equal(/variable *= *0x6;/.test(obfuscatedCode), true); }); }); + + describe('object pattern as argument', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/object-pattern-as-argument.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + it('shouldn\'t transform function parameter object pattern identifier', () => { + const functionParameterMatch: RegExp = /function *\(\{ *bar *\}\) *\{/; + const functionBodyMatch: RegExp = /return *bar;/; + + assert.match(obfuscatedCode, functionParameterMatch); + assert.match(obfuscatedCode, functionBodyMatch); + }); + }); }); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-argument.js b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-argument.js new file mode 100644 index 00000000..bc2199be --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-argument.js @@ -0,0 +1,5 @@ +(function () { + var test = function ({ bar }) { + return bar; + } +})(); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts index be5f9775..68c240a1 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts @@ -146,4 +146,22 @@ describe('VariableDeclarationTransformer', () => { assert.match(obfuscationResult.getObfuscatedCode(), /_0x([a-f0-9]){4,6}\['\\x74\\x65\\x73\\x74'\]/); }); }); + + describe('object pattern as argument', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/object-pattern.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + it('shouldn\'t transform object pattern variable declarator', () => { + const objectPatternVariableDeclarator: RegExp = /var *\{ *bar *\} *= *\{ *'\\x62\\x61\\x72' *: *'\\x66\\x6f\\x6f' *\};/; + const variableUsageMatch: RegExp = /console\['\\x6c\\x6f\\x67'\]\(bar\);/; + + assert.match(obfuscatedCode, objectPatternVariableDeclarator); + assert.match(obfuscatedCode, variableUsageMatch); + }); + }); }); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js new file mode 100644 index 00000000..c921f760 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/object-pattern.js @@ -0,0 +1,4 @@ +(function () { + var { bar } = { bar: 'foo' }; + console.log(bar); +})(); From 5addfa0b726375b6317ae0a1a28b0cf3ec30d6ce Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Wed, 11 Jan 2017 23:37:27 +0300 Subject: [PATCH 09/11] CatchClause obfuscator ObjectPattern fix --- CHANGELOG.md | 4 ++ dist/index.js | 46 ++++++------------- .../CatchClauseTransformer.ts | 15 +++--- .../FunctionDeclarationTransformer.ts | 4 +- .../LabeledStatementTransformer.ts | 6 +-- .../VariableDeclarationTransformer.spec.ts | 2 +- 6 files changed, 31 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 151a805e..099be682 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ Change Log === +v0.8.5 +--- +* fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/29 + v0.8.4 --- * fixed https://github.com/javascript-obfuscator/webpack-obfuscator/issues/13 diff --git a/dist/index.js b/dist/index.js index f48a07a3..c6815eee 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5521,10 +5521,8 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(18); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(8); var CatchClauseTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(CatchClauseTransformer, _AbstractNodeTransfor); @@ -5548,23 +5546,23 @@ var CatchClauseTransformer = function (_AbstractNodeTransfor) { }, { key: "storeCatchClauseParam", value: function storeCatchClauseParam(catchClauseNode, nodeIdentifier) { - var _this2 = this; - - NodeUtils_1.NodeUtils.typedTraverse(catchClauseNode.param, NodeType_1.NodeType.Identifier, { - enter: function enter(node) { - return _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); - } - }); + if (Node_1.Node.isIdentifierNode(catchClauseNode.param)) { + this.identifierReplacer.storeNames(catchClauseNode.param.name, nodeIdentifier); + } } }, { key: "replaceCatchClauseParam", value: function replaceCatchClauseParam(catchClauseNode, nodeIdentifier) { - var _this3 = this; + var _this2 = this; estraverse.replace(catchClauseNode, { enter: function enter(node, parentNode) { if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) { - node.name = _this3.identifierReplacer.replace(node.name, nodeIdentifier); + var newNodeName = _this2.identifierReplacer.replace(node.name, nodeIdentifier); + if (node.name !== newNodeName) { + node.name = newNodeName; + node.obfuscated = true; + } } } }); @@ -5649,18 +5647,12 @@ var FunctionDeclarationTransformer = function (_AbstractNodeTransfor) { }, { key: "storeFunctionName", value: function storeFunctionName(functionDeclarationNode, nodeIdentifier) { - var _this2 = this; - - NodeUtils_1.NodeUtils.typedTraverse(functionDeclarationNode.id, NodeType_1.NodeType.Identifier, { - enter: function enter(node) { - return _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); - } - }); + this.identifierReplacer.storeNames(functionDeclarationNode.id.name, nodeIdentifier); } }, { key: "replaceFunctionName", value: function replaceFunctionName(scopeNode, nodeIdentifier) { - var _this3 = this; + var _this2 = this; var replaceableIdentifiersForCurrentScope = void 0; if (this.replaceableIdentifiers.has(scopeNode)) { @@ -5696,7 +5688,7 @@ var FunctionDeclarationTransformer = function (_AbstractNodeTransfor) { estraverse.replace(scopeNode, { enter: function enter(node, parentNode) { if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) { - var newNodeName = _this3.identifierReplacer.replace(node.name, nodeIdentifier); + var newNodeName = _this2.identifierReplacer.replace(node.name, nodeIdentifier); if (node.name !== newNodeName) { node.name = newNodeName; } else { @@ -5841,10 +5833,8 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var estraverse = __webpack_require__(18); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); var AbstractNodeTransformer_1 = __webpack_require__(17); var Node_1 = __webpack_require__(12); -var NodeUtils_1 = __webpack_require__(8); var LabeledStatementTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(LabeledStatementTransformer, _AbstractNodeTransfor); @@ -5868,23 +5858,17 @@ var LabeledStatementTransformer = function (_AbstractNodeTransfor) { }, { key: "storeLabeledStatementName", value: function storeLabeledStatementName(labeledStatementNode, nodeIdentifier) { - var _this2 = this; - - NodeUtils_1.NodeUtils.typedTraverse(labeledStatementNode.label, NodeType_1.NodeType.Identifier, { - enter: function enter(node) { - return _this2.identifierReplacer.storeNames(node.name, nodeIdentifier); - } - }); + this.identifierReplacer.storeNames(labeledStatementNode.label.name, nodeIdentifier); } }, { key: "replaceLabeledStatementName", value: function replaceLabeledStatementName(labeledStatementNode, nodeIdentifier) { - var _this3 = this; + var _this2 = this; estraverse.replace(labeledStatementNode, { enter: function enter(node, parentNode) { if (Node_1.Node.isLabelIdentifierNode(node, parentNode)) { - node.name = _this3.identifierReplacer.replace(node.name, nodeIdentifier); + node.name = _this2.identifierReplacer.replace(node.name, nodeIdentifier); } } }); diff --git a/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts b/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts index 556f4920..18c71153 100644 --- a/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/CatchClauseTransformer.ts @@ -9,11 +9,9 @@ import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfusc import { IObfuscationReplacerWithStorage } from '../../interfaces/node-transformers/IObfuscationReplacerWithStorage'; import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers'; -import { NodeType } from '../../enums/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; -import { NodeUtils } from '../../node/NodeUtils'; /** * replaces: @@ -61,9 +59,9 @@ export class CatchClauseTransformer extends AbstractNodeTransformer { * @param nodeIdentifier */ private storeCatchClauseParam (catchClauseNode: ESTree.CatchClause, nodeIdentifier: number): void { - NodeUtils.typedTraverse(catchClauseNode.param, NodeType.Identifier, { - enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier) - }); + if (Node.isIdentifierNode(catchClauseNode.param)) { + this.identifierReplacer.storeNames(catchClauseNode.param.name, nodeIdentifier); + } } /** @@ -74,7 +72,12 @@ export class CatchClauseTransformer extends AbstractNodeTransformer { estraverse.replace(catchClauseNode, { enter: (node: ESTree.Node, parentNode: ESTree.Node): any => { if (Node.isReplaceableIdentifierNode(node, parentNode)) { - node.name = this.identifierReplacer.replace(node.name, nodeIdentifier); + const newNodeName: string = this.identifierReplacer.replace(node.name, nodeIdentifier); + + if (node.name !== newNodeName) { + node.name = newNodeName; + node.obfuscated = true; + } } } }); diff --git a/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts b/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts index 33918ac0..2b7a2850 100644 --- a/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/FunctionDeclarationTransformer.ts @@ -76,9 +76,7 @@ export class FunctionDeclarationTransformer extends AbstractNodeTransformer { * @param nodeIdentifier */ private storeFunctionName (functionDeclarationNode: ESTree.FunctionDeclaration, nodeIdentifier: number): void { - NodeUtils.typedTraverse(functionDeclarationNode.id, NodeType.Identifier, { - enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier) - }); + this.identifierReplacer.storeNames(functionDeclarationNode.id.name, nodeIdentifier); } /** diff --git a/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts b/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts index e1c83d41..32512e2f 100644 --- a/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts +++ b/src/node-transformers/obfuscation-transformers/LabeledStatementTransformer.ts @@ -9,11 +9,9 @@ import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfusc import { IObfuscationReplacerWithStorage } from '../../interfaces/node-transformers/IObfuscationReplacerWithStorage'; import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers'; -import { NodeType } from '../../enums/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; -import { NodeUtils } from '../../node/NodeUtils'; /** * replaces: @@ -69,9 +67,7 @@ export class LabeledStatementTransformer extends AbstractNodeTransformer { * @param nodeIdentifier */ private storeLabeledStatementName (labeledStatementNode: ESTree.LabeledStatement, nodeIdentifier: number): void { - NodeUtils.typedTraverse(labeledStatementNode.label, NodeType.Identifier, { - enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier) - }); + this.identifierReplacer.storeNames(labeledStatementNode.label.name, nodeIdentifier); } /** diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts index 68c240a1..91d4d101 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts @@ -147,7 +147,7 @@ describe('VariableDeclarationTransformer', () => { }); }); - describe('object pattern as argument', () => { + describe('object pattern as variable declarator', () => { const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( readFileAsString(__dirname + '/fixtures/object-pattern.js'), { From 5a0dede60ec367440d6f52ab8ab6d9ea68a66a7b Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Thu, 12 Jan 2017 00:15:55 +0300 Subject: [PATCH 10/11] CatchClause obfuscator ObjectPattern test Tests refactoring --- .../CatchClauseTransformer.spec.ts | 18 +++ .../fixtures/object-pattern-as-parameter.js | 7 ++ .../FunctionTransformer.spec.ts | 4 +- ...ment.js => object-pattern-as-parameter.js} | 0 .../VariableDeclarationTransformer.spec.ts | 103 +++++++++++++----- ...able-call-before-variable-declaration-3.js | 14 +++ 6 files changed, 114 insertions(+), 32 deletions(-) create mode 100644 test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js rename test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/{object-pattern-as-argument.js => object-pattern-as-parameter.js} (100%) create mode 100644 test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts index 29f457ae..d1d8e1db 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts @@ -37,4 +37,22 @@ describe('CatchClauseTransformer', () => { assert.equal(firstMatch, secondMatch); }); }); + + describe('object pattern as parameter', () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/object-pattern-as-parameter.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + it('shouldn\'t transform function parameter object pattern identifier', () => { + const functionParameterMatch: RegExp = /\} *catch *\(\{ *name *\}\) *\{/; + const functionBodyMatch: RegExp = /return *name;/; + + assert.match(obfuscatedCode, functionParameterMatch); + assert.match(obfuscatedCode, functionBodyMatch); + }); + }); }); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js b/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js new file mode 100644 index 00000000..8a6c040b --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/fixtures/object-pattern-as-parameter.js @@ -0,0 +1,7 @@ +(function () { + try { + + } catch ({ name }) { + return name; + } +})(); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts index d15b97b3..95040aeb 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec.ts @@ -35,9 +35,9 @@ describe('FunctionTransformer', () => { }); }); - describe('object pattern as argument', () => { + describe('object pattern as parameter', () => { const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( - readFileAsString(__dirname + '/fixtures/object-pattern-as-argument.js'), + readFileAsString(__dirname + '/fixtures/object-pattern-as-parameter.js'), { ...NO_CUSTOM_NODES_PRESET } diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-argument.js b/test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-parameter.js similarity index 100% rename from test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-argument.js rename to test/functional-tests/node-transformers/obfuscation-transformers/function-transformer/fixtures/object-pattern-as-parameter.js diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts index 91d4d101..df211160 100644 --- a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts +++ b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts @@ -77,48 +77,91 @@ describe('VariableDeclarationTransformer', () => { }); describe(`variable calls before variable declaration when function param has the same name as variables name`, () => { - let obfuscationResult: IObfuscationResult, - functionParamIdentifierName: string|null, - innerFunctionParamIdentifierName: string|null, - constructorIdentifierName: string|null, - objectIdentifierName: string|null, - variableDeclarationIdentifierName: string|null; + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/variable-call-before-variable-declaration-2.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - beforeEach(() => { - obfuscationResult = JavaScriptObfuscator.obfuscate( - readFileAsString(__dirname + '/fixtures/variable-call-before-variable-declaration-2.js'), - { - ...NO_CUSTOM_NODES_PRESET - } - ); + const functionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/function *_0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\,(_0x[a-f0-9]{4,6})\) *\{/); + const innerFunctionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/function _0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\) *\{/); + const constructorIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); + const objectIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/return\{'\\x74':(_0x[a-f0-9]{4,6})\}/); + const variableDeclarationIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/var *(_0x[a-f0-9]{4,6});/); + + const outerFunctionParamIdentifierName: string|null = (functionParamIdentifierMatch)[1]; + const innerFunctionParamIdentifierName: string|null = (innerFunctionParamIdentifierMatch)[1]; + const constructorIdentifierName: string|null = (constructorIdentifierMatch)[1]; + const objectIdentifierName: string|null = (objectIdentifierMatch)[1]; + const variableDeclarationIdentifierName: string|null = (variableDeclarationIdentifierMatch)[1]; + + it('should\'t name variables inside inner function with names from outer function params', () => { + assert.notEqual(outerFunctionParamIdentifierName, constructorIdentifierName); + assert.notEqual(outerFunctionParamIdentifierName, innerFunctionParamIdentifierName); }); - it('should correct transform variables inside function body', () => { - const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); - const functionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/function *_0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\,(_0x[a-f0-9]{4,6})\) *\{/); - const innerFunctionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/function _0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\) *\{/); - const constructorIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); - const objectIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/return\{'\\x74':(_0x[a-f0-9]{4,6})\}/); - const variableDeclarationIdentifierMatch: RegExpMatchArray|null = obfuscatedCode - .match(/var *(_0x[a-f0-9]{4,6});/); + it('should correct transform variables inside outer function body', () => { + assert.equal(outerFunctionParamIdentifierName, objectIdentifierName); + assert.equal(outerFunctionParamIdentifierName, variableDeclarationIdentifierName); + }); - functionParamIdentifierName = (functionParamIdentifierMatch)[1]; - innerFunctionParamIdentifierName = (innerFunctionParamIdentifierMatch)[1]; - constructorIdentifierName = (constructorIdentifierMatch)[1]; - objectIdentifierName = (objectIdentifierMatch)[1]; - variableDeclarationIdentifierName = (variableDeclarationIdentifierMatch)[1]; + it('should correct transform variables inside inner function body', () => { + assert.equal(innerFunctionParamIdentifierName, constructorIdentifierName); + }); + it('should keep equal names after transformation for variables with same names', () => { + assert.equal(variableDeclarationIdentifierName, objectIdentifierName); + }); + }); + + describe(`variable calls before variable declaration when catch clause param has the same name as variables name`, () => { + const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate( + readFileAsString(__dirname + '/fixtures/variable-call-before-variable-declaration-3.js'), + { + ...NO_CUSTOM_NODES_PRESET + } + ); + const obfuscatedCode: string = obfuscationResult.getObfuscatedCode(); + + const catchClauseParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/catch *\((_0x[a-f0-9]{4,6})\) *\{/); + const innerFunctionParamIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/function _0x[a-f0-9]{4,6} *\((_0x[a-f0-9]{4,6})\) *\{/); + const constructorIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/console\['\\x6c\\x6f\\x67'\]\((_0x[a-f0-9]{4,6})\)/); + const objectIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/return\{'\\x74':(_0x[a-f0-9]{4,6})\}/); + const variableDeclarationIdentifierMatch: RegExpMatchArray|null = obfuscatedCode + .match(/var *(_0x[a-f0-9]{4,6});/); + + const functionParamIdentifierName: string|null = (catchClauseParamIdentifierMatch)[1]; + const innerFunctionParamIdentifierName: string|null = (innerFunctionParamIdentifierMatch)[1]; + const constructorIdentifierName: string|null = (constructorIdentifierMatch)[1]; + const objectIdentifierName: string|null = (objectIdentifierMatch)[1]; + const variableDeclarationIdentifierName: string|null = (variableDeclarationIdentifierMatch)[1]; + + it('should\'t name variables inside inner function with names from catch clause param', () => { assert.notEqual(functionParamIdentifierName, constructorIdentifierName); assert.notEqual(functionParamIdentifierName, innerFunctionParamIdentifierName); + }); + it('should correct transform variables inside catch clause body', () => { assert.equal(functionParamIdentifierName, objectIdentifierName); assert.equal(functionParamIdentifierName, variableDeclarationIdentifierName); + }); + it('should correct transform variables inside inner function body', () => { assert.equal(innerFunctionParamIdentifierName, constructorIdentifierName); + }); + + it('should keep equal names after transformation for variables with same names', () => { assert.equal(variableDeclarationIdentifierName, objectIdentifierName); }); }); diff --git a/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js new file mode 100644 index 00000000..d2003cf2 --- /dev/null +++ b/test/functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/fixtures/variable-call-before-variable-declaration-3.js @@ -0,0 +1,14 @@ +(function () { + try { + + } catch (t) { + return function () { + function baz (t) { + console.log(t); + } + + return {t: t}; + var t; + }(); + } +})(); \ No newline at end of file From 99df22eb264b861485f2d31c68c374beb8ae6356 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Thu, 12 Jan 2017 00:54:42 +0300 Subject: [PATCH 11/11] 0.9.0-dev.10 --- CHANGELOG.md | 4 + dist/index.js | 217 +++++++++++++++++++++++++------------------------- package.json | 2 +- 3 files changed, 113 insertions(+), 110 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 099be682..33c1dffa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ Change Log === +v0.8.6 +--- +* additional fixes for https://github.com/javascript-obfuscator/javascript-obfuscator/issues/29 + v0.8.5 --- * fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/29 diff --git a/dist/index.js b/dist/index.js index c6815eee..138dc0b8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -90,7 +90,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 151); +/******/ return __webpack_require__(__webpack_require__.s = 150); /******/ }) /************************************************************************/ /******/ ([ @@ -198,8 +198,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var escodegen = __webpack_require__(28); var esprima = __webpack_require__(49); -var estraverse = __webpack_require__(18); -var NodeType_1 = __webpack_require__(15); +var estraverse = __webpack_require__(17); +var NodeType_1 = __webpack_require__(18); var Node_1 = __webpack_require__(12); var Nodes_1 = __webpack_require__(21); @@ -555,7 +555,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var NodeType_1 = __webpack_require__(15); +var NodeType_1 = __webpack_require__(18); var Node = function () { function Node() { @@ -937,6 +937,66 @@ exports.Utils = Utils; "use strict"; +var CustomNodes; +(function (CustomNodes) { + CustomNodes[CustomNodes["BinaryExpressionFunctionNode"] = 0] = "BinaryExpressionFunctionNode"; + CustomNodes[CustomNodes["BlockStatementControlFlowFlatteningNode"] = 1] = "BlockStatementControlFlowFlatteningNode"; + CustomNodes[CustomNodes["CallExpressionControlFlowStorageCallNode"] = 2] = "CallExpressionControlFlowStorageCallNode"; + CustomNodes[CustomNodes["CallExpressionFunctionNode"] = 3] = "CallExpressionFunctionNode"; + CustomNodes[CustomNodes["ControlFlowStorageNode"] = 4] = "ControlFlowStorageNode"; + CustomNodes[CustomNodes["ConsoleOutputDisableExpressionNode"] = 5] = "ConsoleOutputDisableExpressionNode"; + CustomNodes[CustomNodes["DebugProtectionFunctionCallNode"] = 6] = "DebugProtectionFunctionCallNode"; + CustomNodes[CustomNodes["DebugProtectionFunctionIntervalNode"] = 7] = "DebugProtectionFunctionIntervalNode"; + CustomNodes[CustomNodes["DebugProtectionFunctionNode"] = 8] = "DebugProtectionFunctionNode"; + CustomNodes[CustomNodes["DomainLockNode"] = 9] = "DomainLockNode"; + CustomNodes[CustomNodes["ExpressionWithOperatorControlFlowStorageCallNode"] = 10] = "ExpressionWithOperatorControlFlowStorageCallNode"; + CustomNodes[CustomNodes["LogicalExpressionFunctionNode"] = 11] = "LogicalExpressionFunctionNode"; + CustomNodes[CustomNodes["NodeCallsControllerFunctionNode"] = 12] = "NodeCallsControllerFunctionNode"; + CustomNodes[CustomNodes["SelfDefendingUnicodeNode"] = 13] = "SelfDefendingUnicodeNode"; + CustomNodes[CustomNodes["StringArrayCallsWrapper"] = 14] = "StringArrayCallsWrapper"; + CustomNodes[CustomNodes["StringArrayNode"] = 15] = "StringArrayNode"; + CustomNodes[CustomNodes["StringArrayRotateFunctionNode"] = 16] = "StringArrayRotateFunctionNode"; +})(CustomNodes = exports.CustomNodes || (exports.CustomNodes = {})); + +/***/ }, +/* 16 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; + + +var _classCallCheck2 = __webpack_require__(0); + +var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); + +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 RandomGeneratorUtils_1 = __webpack_require__(9); +var AbstractNodeTransformer = function AbstractNodeTransformer(options) { + (0, _classCallCheck3.default)(this, AbstractNodeTransformer); + + this.nodeIdentifier = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(0, 10000); + this.options = options; +}; +AbstractNodeTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractNodeTransformer); +exports.AbstractNodeTransformer = AbstractNodeTransformer; + +/***/ }, +/* 17 */ +/***/ function(module, exports) { + +module.exports = require("estraverse"); + +/***/ }, +/* 18 */ +/***/ function(module, exports, __webpack_require__) { + +"use strict"; + + var Utils_1 = __webpack_require__(14); exports.NodeType = Utils_1.Utils.strEnumify({ ArrayExpression: 'ArrayExpression', @@ -974,66 +1034,6 @@ exports.NodeType = Utils_1.Utils.strEnumify({ WhileStatement: 'WhileStatement' }); -/***/ }, -/* 16 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var CustomNodes; -(function (CustomNodes) { - CustomNodes[CustomNodes["BinaryExpressionFunctionNode"] = 0] = "BinaryExpressionFunctionNode"; - CustomNodes[CustomNodes["BlockStatementControlFlowFlatteningNode"] = 1] = "BlockStatementControlFlowFlatteningNode"; - CustomNodes[CustomNodes["CallExpressionControlFlowStorageCallNode"] = 2] = "CallExpressionControlFlowStorageCallNode"; - CustomNodes[CustomNodes["CallExpressionFunctionNode"] = 3] = "CallExpressionFunctionNode"; - CustomNodes[CustomNodes["ControlFlowStorageNode"] = 4] = "ControlFlowStorageNode"; - CustomNodes[CustomNodes["ConsoleOutputDisableExpressionNode"] = 5] = "ConsoleOutputDisableExpressionNode"; - CustomNodes[CustomNodes["DebugProtectionFunctionCallNode"] = 6] = "DebugProtectionFunctionCallNode"; - CustomNodes[CustomNodes["DebugProtectionFunctionIntervalNode"] = 7] = "DebugProtectionFunctionIntervalNode"; - CustomNodes[CustomNodes["DebugProtectionFunctionNode"] = 8] = "DebugProtectionFunctionNode"; - CustomNodes[CustomNodes["DomainLockNode"] = 9] = "DomainLockNode"; - CustomNodes[CustomNodes["ExpressionWithOperatorControlFlowStorageCallNode"] = 10] = "ExpressionWithOperatorControlFlowStorageCallNode"; - CustomNodes[CustomNodes["LogicalExpressionFunctionNode"] = 11] = "LogicalExpressionFunctionNode"; - CustomNodes[CustomNodes["NodeCallsControllerFunctionNode"] = 12] = "NodeCallsControllerFunctionNode"; - CustomNodes[CustomNodes["SelfDefendingUnicodeNode"] = 13] = "SelfDefendingUnicodeNode"; - CustomNodes[CustomNodes["StringArrayCallsWrapper"] = 14] = "StringArrayCallsWrapper"; - CustomNodes[CustomNodes["StringArrayNode"] = 15] = "StringArrayNode"; - CustomNodes[CustomNodes["StringArrayRotateFunctionNode"] = 16] = "StringArrayRotateFunctionNode"; -})(CustomNodes = exports.CustomNodes || (exports.CustomNodes = {})); - -/***/ }, -/* 17 */ -/***/ function(module, exports, __webpack_require__) { - -"use strict"; - - -var _classCallCheck2 = __webpack_require__(0); - -var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); - -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 RandomGeneratorUtils_1 = __webpack_require__(9); -var AbstractNodeTransformer = function AbstractNodeTransformer(options) { - (0, _classCallCheck3.default)(this, AbstractNodeTransformer); - - this.nodeIdentifier = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(0, 10000); - this.options = options; -}; -AbstractNodeTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractNodeTransformer); -exports.AbstractNodeTransformer = AbstractNodeTransformer; - -/***/ }, -/* 18 */ -/***/ function(module, exports) { - -module.exports = require("estraverse"); - /***/ }, /* 19 */ /***/ function(module, exports) { @@ -1073,7 +1073,7 @@ var _createClass3 = _interopRequireDefault(_createClass2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var escodegen = __webpack_require__(28); -var NodeType_1 = __webpack_require__(15); +var NodeType_1 = __webpack_require__(18); var Nodes = function () { function Nodes() { @@ -2119,7 +2119,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var AbstractControlFlowReplacer_1 = __webpack_require__(41); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var Node_1 = __webpack_require__(12); var ExpressionWithOperatorControlFlowReplacer = function (_AbstractControlFlowR) { (0, _inherits3.default)(ExpressionWithOperatorControlFlowReplacer, _AbstractControlFlowR); @@ -2467,9 +2467,9 @@ 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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var NodeTransformers_1 = __webpack_require__(40); -var NodeType_1 = __webpack_require__(15); +var NodeType_1 = __webpack_require__(18); var ObfuscationEvents_1 = __webpack_require__(23); var VisitorDirection_1 = __webpack_require__(86); var Node_1 = __webpack_require__(12); @@ -2935,7 +2935,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var CustomNodeGroups_1 = __webpack_require__(38); var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(65); var DebugProtectionCustomNodeGroup_1 = __webpack_require__(76); @@ -3311,7 +3311,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ObfuscationEvents_1 = __webpack_require__(23); var AbstractCustomNodeGroup_1 = __webpack_require__(27); var NodeAppender_1 = __webpack_require__(25); @@ -4104,7 +4104,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ObfuscationEvents_1 = __webpack_require__(23); var AbstractCustomNodeGroup_1 = __webpack_require__(27); var NodeAppender_1 = __webpack_require__(25); @@ -4287,7 +4287,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ObfuscationEvents_1 = __webpack_require__(23); var AbstractCustomNodeGroup_1 = __webpack_require__(27); var NodeAppender_1 = __webpack_require__(25); @@ -4534,7 +4534,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ObfuscationEvents_1 = __webpack_require__(23); var AbstractCustomNodeGroup_1 = __webpack_require__(27); var NodeAppender_1 = __webpack_require__(25); @@ -4920,7 +4920,7 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var Initializable_1 = __webpack_require__(10); -var CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ObfuscationEvents_1 = __webpack_require__(23); var AbstractCustomNodeGroup_1 = __webpack_require__(27); var NodeAppender_1 = __webpack_require__(25); @@ -5084,8 +5084,8 @@ 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 CustomNodes_1 = __webpack_require__(16); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var CustomNodes_1 = __webpack_require__(15); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var RandomGeneratorUtils_1 = __webpack_require__(9); var Utils_1 = __webpack_require__(14); @@ -5172,10 +5172,10 @@ 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 estraverse = __webpack_require__(18); -var CustomNodes_1 = __webpack_require__(16); -var NodeType_1 = __webpack_require__(15); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var estraverse = __webpack_require__(17); +var CustomNodes_1 = __webpack_require__(15); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var NodeAppender_1 = __webpack_require__(25); var NodeControlFlowReplacers_1 = __webpack_require__(39); @@ -5307,7 +5307,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 CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(42); var BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = function (_ExpressionWithOperat) { (0, _inherits3.default)(BinaryExpressionControlFlowReplacer, _ExpressionWithOperat); @@ -5366,7 +5366,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 CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var AbstractControlFlowReplacer_1 = __webpack_require__(41); var Node_1 = __webpack_require__(12); var CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = function (_AbstractControlFlowR) { @@ -5442,7 +5442,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 CustomNodes_1 = __webpack_require__(16); +var CustomNodes_1 = __webpack_require__(15); var ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(42); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); @@ -5519,9 +5519,9 @@ 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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var CatchClauseTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(CatchClauseTransformer, _AbstractNodeTransfor); @@ -5613,10 +5613,10 @@ 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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); var FunctionDeclarationTransformer = function (_AbstractNodeTransfor) { @@ -5737,9 +5737,9 @@ 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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var FunctionTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(FunctionTransformer, _AbstractNodeTransfor); @@ -5831,9 +5831,9 @@ 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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var LabeledStatementTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(LabeledStatementTransformer, _AbstractNodeTransfor); @@ -5917,7 +5917,7 @@ var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var escodegen = __webpack_require__(28); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var LiteralTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(LiteralTransformer, _AbstractNodeTransfor); @@ -5996,8 +5996,8 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var MemberExpressionTransformer = function (_AbstractNodeTransfor) { (0, _inherits3.default)(MemberExpressionTransformer, _AbstractNodeTransfor); @@ -6066,8 +6066,8 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var MethodDefinitionTransformer = MethodDefinitionTransformer_1 = function (_AbstractNodeTransfor) { (0, _inherits3.default)(MethodDefinitionTransformer, _AbstractNodeTransfor); @@ -6135,8 +6135,8 @@ var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); var ServiceIdentifiers_1 = __webpack_require__(4); var escodegen = __webpack_require__(28); -var NodeType_1 = __webpack_require__(15); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var Utils_1 = __webpack_require__(14); var ObjectExpressionTransformer = ObjectExpressionTransformer_1 = function (_AbstractNodeTransfor) { @@ -6229,7 +6229,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 AbstractNodeTransformer_1 = __webpack_require__(17); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var Nodes_1 = __webpack_require__(21); var TemplateLiteralTransformer = TemplateLiteralTransformer_1 = function (_AbstractNodeTransfor) { @@ -6368,10 +6368,10 @@ 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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var NodeObfuscationReplacers_1 = __webpack_require__(20); -var NodeType_1 = __webpack_require__(15); -var AbstractNodeTransformer_1 = __webpack_require__(17); +var NodeType_1 = __webpack_require__(18); +var AbstractNodeTransformer_1 = __webpack_require__(16); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); var VariableDeclarationTransformer = function (_AbstractNodeTransfor) { @@ -7151,7 +7151,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 estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var CalleeDataExtractors_1 = __webpack_require__(37); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); @@ -7269,7 +7269,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); -var estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var AbstractCalleeDataExtractor_1 = __webpack_require__(33); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); @@ -7347,7 +7347,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); -var estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var AbstractCalleeDataExtractor_1 = __webpack_require__(33); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); @@ -7432,7 +7432,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var tslib_1 = __webpack_require__(3); var inversify_1 = __webpack_require__(2); -var estraverse = __webpack_require__(18); +var estraverse = __webpack_require__(17); var Node_1 = __webpack_require__(12); var NodeUtils_1 = __webpack_require__(8); var AbstractCalleeDataExtractor_1 = __webpack_require__(33); @@ -8130,8 +8130,7 @@ module.exports = require("mkdirp"); module.exports = require("reflect-metadata"); /***/ }, -/* 150 */, -/* 151 */ +/* 150 */ /***/ function(module, exports, __webpack_require__) { "use strict"; diff --git a/package.json b/package.json index 95da333c..322b42cc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "javascript-obfuscator", - "version": "0.9.0-dev.9", + "version": "0.9.0-dev.10", "description": "JavaScript obfuscator", "keywords": [ "obfuscator",