mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
additional test for FunctionControlFlowTransformer
This commit is contained in:
Vendored
+30
-30
@@ -198,8 +198,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
||||
|
||||
var escodegen = __webpack_require__(25);
|
||||
var esprima = __webpack_require__(48);
|
||||
var estraverse = __webpack_require__(16);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
|
||||
var NodeUtils = function () {
|
||||
@@ -530,7 +530,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__(16);
|
||||
|
||||
var Node = function () {
|
||||
function Node() {
|
||||
@@ -895,6 +895,12 @@ exports.AbstractCustomNode = AbstractCustomNode;
|
||||
|
||||
/***/ },
|
||||
/* 15 */
|
||||
/***/ function(module, exports) {
|
||||
|
||||
module.exports = require("estraverse");
|
||||
|
||||
/***/ },
|
||||
/* 16 */
|
||||
/***/ function(module, exports, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
@@ -936,12 +942,6 @@ exports.NodeType = Utils_1.Utils.strEnumify({
|
||||
WhileStatement: 'WhileStatement'
|
||||
});
|
||||
|
||||
/***/ },
|
||||
/* 16 */
|
||||
/***/ function(module, exports) {
|
||||
|
||||
module.exports = require("estraverse");
|
||||
|
||||
/***/ },
|
||||
/* 17 */
|
||||
/***/ function(module, exports, __webpack_require__) {
|
||||
@@ -1382,7 +1382,7 @@ var _createClass3 = _interopRequireDefault(_createClass2);
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var escodegen = __webpack_require__(25);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
|
||||
var Nodes = function () {
|
||||
function Nodes() {
|
||||
@@ -2176,9 +2176,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeTransformers_1 = __webpack_require__(40);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var ObfuscationEvents_1 = __webpack_require__(22);
|
||||
var VisitorDirection_1 = __webpack_require__(81);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
@@ -4490,9 +4490,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var CustomNodes_1 = __webpack_require__(20);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeAppender_1 = __webpack_require__(24);
|
||||
@@ -4740,9 +4740,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeObfuscatorsReplacers_1 = __webpack_require__(19);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -4836,9 +4836,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeObfuscatorsReplacers_1 = __webpack_require__(19);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -4966,9 +4966,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeObfuscatorsReplacers_1 = __webpack_require__(19);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -5064,9 +5064,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeObfuscatorsReplacers_1 = __webpack_require__(19);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -5238,7 +5238,7 @@ var inversify_1 = __webpack_require__(2);
|
||||
var ServiceIdentifiers_1 = __webpack_require__(4);
|
||||
var escodegen = __webpack_require__(25);
|
||||
var NodeObfuscatorsReplacers_1 = __webpack_require__(19);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var MemberExpressionObfuscator = function (_AbstractNodeTransfor) {
|
||||
@@ -5400,7 +5400,7 @@ var tslib_1 = __webpack_require__(3);
|
||||
var inversify_1 = __webpack_require__(2);
|
||||
var ServiceIdentifiers_1 = __webpack_require__(4);
|
||||
var escodegen = __webpack_require__(25);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var Utils_1 = __webpack_require__(13);
|
||||
@@ -5498,9 +5498,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var NodeObfuscatorsReplacers_1 = __webpack_require__(19);
|
||||
var NodeType_1 = __webpack_require__(15);
|
||||
var NodeType_1 = __webpack_require__(16);
|
||||
var AbstractNodeTransformer_1 = __webpack_require__(17);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -6289,7 +6289,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var CalleeDataExtractors_1 = __webpack_require__(37);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -6407,7 +6407,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var AbstractCalleeDataExtractor_1 = __webpack_require__(32);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -6485,7 +6485,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var AbstractCalleeDataExtractor_1 = __webpack_require__(32);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
@@ -6570,7 +6570,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__(16);
|
||||
var estraverse = __webpack_require__(15);
|
||||
var Node_1 = __webpack_require__(12);
|
||||
var NodeUtils_1 = __webpack_require__(8);
|
||||
var AbstractCalleeDataExtractor_1 = __webpack_require__(32);
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
var test = 1 + 2;
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
(function () {
|
||||
function foo () {
|
||||
function bar () {
|
||||
function baz () {
|
||||
function bash () {
|
||||
var variable = 1 + 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})();
|
||||
+56
-1
@@ -46,7 +46,7 @@ describe('FunctionControlFlowTransformer', () => {
|
||||
});
|
||||
|
||||
describe('variant #2 - two `control flow storage` nodes: root and inner', () => {
|
||||
const samplesCount: number = 150;
|
||||
const samplesCount: number = 200;
|
||||
const delta: number = 0.1;
|
||||
const expectedValue: number = 0.5;
|
||||
const regExp1: RegExp = new RegExp(
|
||||
@@ -114,5 +114,60 @@ describe('FunctionControlFlowTransformer', () => {
|
||||
assert.match(obfuscatedCode, regexp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('variant #4 - no `control flow storage` node to the root block scope', () => {
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
readFileAsString(
|
||||
'./test/fixtures/node-transformers/node-control-flow-transformers/function-control-flow-transformer-root-block-scope-1.js'
|
||||
),
|
||||
{
|
||||
...NO_CUSTOM_NODES_PRESET,
|
||||
controlFlowFlattening: true,
|
||||
controlFlowFlatteningThreshold: 1
|
||||
}
|
||||
);
|
||||
const obfuscatedCode: string = obfuscationResult.getObfuscatedCode();
|
||||
|
||||
it('should\'t add control flow storage node when transformed node in the root block scope', () => {
|
||||
assert.match(obfuscatedCode, /^var *test *= *0x1 *\+ *0x2;$/);
|
||||
});
|
||||
});
|
||||
|
||||
describe('variant #5 - no `control flow storage` node in the root block scope', () => {
|
||||
const samplesCount: number = 20;
|
||||
const expectedValue: number = 0;
|
||||
const regExp: RegExp = new RegExp(
|
||||
`var *[a-zA-Z]{6} *= *\\{` +
|
||||
`'(\\\\x[a-f0-9]*){3}' *: *function *_0x[0-9] *\\(${variableMatch}, *${variableMatch}\\) *\\{` +
|
||||
`return *${variableMatch} *\\+ *${variableMatch};` +
|
||||
`\\}` +
|
||||
`\\};`
|
||||
);
|
||||
|
||||
|
||||
it('should\'t add control flow storage node to the root block scope when transformed nodes not in the root block scope', () => {
|
||||
let totalValue: number = 0;
|
||||
|
||||
for (let i = 0; i < samplesCount; i++) {
|
||||
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
|
||||
readFileAsString(
|
||||
'./test/fixtures/node-transformers/node-control-flow-transformers/function-control-flow-transformer-root-block-scope-2.js'
|
||||
),
|
||||
{
|
||||
...NO_CUSTOM_NODES_PRESET,
|
||||
controlFlowFlattening: true,
|
||||
controlFlowFlatteningThreshold: 1
|
||||
}
|
||||
);
|
||||
const obfuscatedCode: string = obfuscationResult.getObfuscatedCode();
|
||||
|
||||
if (regExp.test(obfuscatedCode)) {
|
||||
totalValue++;
|
||||
}
|
||||
}
|
||||
|
||||
assert.equal(totalValue, expectedValue);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user