js-confuser 2.1.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/dist/index.js +2 -1
- package/dist/obfuscator.js +21 -30
- package/dist/order.js +0 -2
- package/dist/presets.js +0 -3
- package/dist/templates/xorStringTemplate.js +33 -0
- package/dist/transforms/controlFlowFlattening.js +1108 -1107
- package/dist/transforms/dispatcher.js +3 -0
- package/dist/transforms/flatten.js +13 -2
- package/dist/transforms/identifier/renameVariables.js +0 -1
- package/dist/transforms/lock/integrity.js +2 -1
- package/dist/transforms/pack.js +4 -3
- package/dist/transforms/preparation.js +10 -1
- package/dist/transforms/rgf.js +2 -1
- package/dist/transforms/string/encoding.js +0 -6
- package/dist/transforms/string/stringConcealing.js +1 -7
- package/dist/utils/ast-utils.js +3 -1
- package/dist/utils/random-utils.js +10 -3
- package/dist/validateOptions.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -80,6 +80,7 @@ function _obfuscateWithProfiler() {
|
|
|
80
80
|
parseTime,
|
|
81
81
|
currentTransformTime,
|
|
82
82
|
beforeCompileTime,
|
|
83
|
+
_Obfuscator$generateC,
|
|
83
84
|
code,
|
|
84
85
|
compileTime,
|
|
85
86
|
endTime,
|
|
@@ -129,7 +130,7 @@ function _obfuscateWithProfiler() {
|
|
|
129
130
|
}
|
|
130
131
|
});
|
|
131
132
|
beforeCompileTime = performance.now();
|
|
132
|
-
|
|
133
|
+
_Obfuscator$generateC = _obfuscator["default"].generateCode(ast, obfuscator.options), code = _Obfuscator$generateC.code;
|
|
133
134
|
compileTime = performance.now() - beforeCompileTime;
|
|
134
135
|
endTime = performance.now();
|
|
135
136
|
obfuscationTime = endTime - startTime;
|
package/dist/obfuscator.js
CHANGED
|
@@ -20,10 +20,8 @@ var _dispatcher = _interopRequireDefault(require("./transforms/dispatcher"));
|
|
|
20
20
|
var _duplicateLiteralsRemoval = _interopRequireDefault(require("./transforms/extraction/duplicateLiteralsRemoval"));
|
|
21
21
|
var _objectExtraction = _interopRequireDefault(require("./transforms/extraction/objectExtraction"));
|
|
22
22
|
var _globalConcealing = _interopRequireDefault(require("./transforms/identifier/globalConcealing"));
|
|
23
|
-
var _stringCompression = _interopRequireDefault(require("./transforms/string/stringCompression"));
|
|
24
23
|
var _deadCode = _interopRequireDefault(require("./transforms/deadCode"));
|
|
25
24
|
var _stringSplitting = _interopRequireDefault(require("./transforms/string/stringSplitting"));
|
|
26
|
-
var _shuffle = _interopRequireDefault(require("./transforms/shuffle"));
|
|
27
25
|
var _astScrambler = _interopRequireDefault(require("./transforms/astScrambler"));
|
|
28
26
|
var _calculator = _interopRequireDefault(require("./transforms/calculator"));
|
|
29
27
|
var _movedDeclarations = _interopRequireDefault(require("./transforms/identifier/movedDeclarations"));
|
|
@@ -80,7 +78,6 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
80
78
|
renamedVariables: new Map(),
|
|
81
79
|
// Internal functions, should not be renamed/removed
|
|
82
80
|
internals: {
|
|
83
|
-
stringCompressionLibraryName: "",
|
|
84
81
|
nativeFunctionName: "",
|
|
85
82
|
integrityHashName: "",
|
|
86
83
|
invokeCountermeasuresFnName: ""
|
|
@@ -120,10 +117,8 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
120
117
|
// String Compression is only applied to the main obfuscator
|
|
121
118
|
// Any RGF functions will not have string compression due to the size of the decompression function
|
|
122
119
|
|
|
123
|
-
push(!parentObfuscator && this.options.stringCompression, _stringCompression["default"]);
|
|
124
120
|
push(this.options.variableMasking, _variableMasking["default"]);
|
|
125
121
|
push(this.options.duplicateLiteralsRemoval, _duplicateLiteralsRemoval["default"]);
|
|
126
|
-
push(this.options.shuffle, _shuffle["default"]);
|
|
127
122
|
push(this.options.movedDeclarations, _movedDeclarations["default"]);
|
|
128
123
|
push(this.options.renameLabels, _renameLabels["default"]);
|
|
129
124
|
push(this.options.minify, _minify["default"]);
|
|
@@ -160,9 +155,6 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
160
155
|
this.plugins = this.plugins.sort(function (a, b) {
|
|
161
156
|
return a.pluginInstance.order - b.pluginInstance.order;
|
|
162
157
|
});
|
|
163
|
-
if (!parentObfuscator && this.hasPlugin(_order.Order.StringCompression)) {
|
|
164
|
-
this.globalState.internals.stringCompressionLibraryName = this.nameGen.generate(false);
|
|
165
|
-
}
|
|
166
158
|
}
|
|
167
159
|
return _createClass(Obfuscator, [{
|
|
168
160
|
key: "isInternalVariable",
|
|
@@ -217,14 +209,6 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
217
209
|
var hasNativeCode = typeof fn === "function" && ("" + fn).includes("[native code]");
|
|
218
210
|
return hasNativeCode;
|
|
219
211
|
}
|
|
220
|
-
}, {
|
|
221
|
-
key: "getStringCompressionLibraryName",
|
|
222
|
-
value: function getStringCompressionLibraryName() {
|
|
223
|
-
if (this.parentObfuscator) {
|
|
224
|
-
return this.parentObfuscator.getStringCompressionLibraryName();
|
|
225
|
-
}
|
|
226
|
-
return this.globalState.internals.stringCompressionLibraryName;
|
|
227
|
-
}
|
|
228
212
|
}, {
|
|
229
213
|
key: "getObfuscatedVariableName",
|
|
230
214
|
value: function getObfuscatedVariableName(originalName, programNode) {
|
|
@@ -273,7 +257,7 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
273
257
|
key: "obfuscate",
|
|
274
258
|
value: function () {
|
|
275
259
|
var _obfuscate = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(sourceCode) {
|
|
276
|
-
var ast, code;
|
|
260
|
+
var ast, _this$generateCode, code, map;
|
|
277
261
|
return _regenerator().w(function (_context) {
|
|
278
262
|
while (1) switch (_context.n) {
|
|
279
263
|
case 0:
|
|
@@ -282,9 +266,14 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
282
266
|
ast = this.obfuscateAST(ast);
|
|
283
267
|
|
|
284
268
|
// Generate the transformed code from the modified AST with comments removed and compacted output
|
|
285
|
-
|
|
269
|
+
_this$generateCode = this.generateCode(ast), code = _this$generateCode.code, map = _this$generateCode.map;
|
|
270
|
+
if (map) {
|
|
271
|
+
map.sourcesContent = [sourceCode];
|
|
272
|
+
}
|
|
286
273
|
return _context.a(2, {
|
|
287
|
-
code: code
|
|
274
|
+
code: code,
|
|
275
|
+
map: map,
|
|
276
|
+
ast: ast
|
|
288
277
|
});
|
|
289
278
|
}
|
|
290
279
|
}, _callee, this);
|
|
@@ -431,19 +420,21 @@ var Obfuscator = exports["default"] = /*#__PURE__*/function () {
|
|
|
431
420
|
}], [{
|
|
432
421
|
key: "generateCode",
|
|
433
422
|
value: function generateCode(ast) {
|
|
423
|
+
var _options$sourceMap;
|
|
434
424
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_OPTIONS;
|
|
435
425
|
var compact = !!options.compact;
|
|
436
|
-
var
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
426
|
+
var GeneratorResult = (0, _generator["default"])(ast, {
|
|
427
|
+
comments: false,
|
|
428
|
+
// Remove comments
|
|
429
|
+
minified: compact,
|
|
430
|
+
sourceMaps: !!options.sourceMap,
|
|
431
|
+
sourceFileName: _typeof(options.sourceMap) === "object" && ((_options$sourceMap = options.sourceMap) === null || _options$sourceMap === void 0 ? void 0 : _options$sourceMap.fileName) || "script.js"
|
|
432
|
+
// jsescOption: {
|
|
433
|
+
// String Encoding using Babel
|
|
434
|
+
// escapeEverything: true,
|
|
435
|
+
// },
|
|
436
|
+
});
|
|
437
|
+
return GeneratorResult;
|
|
447
438
|
}
|
|
448
439
|
|
|
449
440
|
/**
|
package/dist/order.js
CHANGED
|
@@ -20,10 +20,8 @@ var Order = exports.Order = /*#__PURE__*/function (Order) {
|
|
|
20
20
|
Order[Order["OpaquePredicates"] = 13] = "OpaquePredicates";
|
|
21
21
|
Order[Order["StringSplitting"] = 16] = "StringSplitting";
|
|
22
22
|
Order[Order["StringConcealing"] = 17] = "StringConcealing";
|
|
23
|
-
Order[Order["StringCompression"] = 18] = "StringCompression";
|
|
24
23
|
Order[Order["VariableMasking"] = 20] = "VariableMasking";
|
|
25
24
|
Order[Order["DuplicateLiteralsRemoval"] = 22] = "DuplicateLiteralsRemoval";
|
|
26
|
-
Order[Order["Shuffle"] = 23] = "Shuffle";
|
|
27
25
|
Order[Order["ControlFlowFlattening"] = 24] = "ControlFlowFlattening";
|
|
28
26
|
Order[Order["MovedDeclarations"] = 25] = "MovedDeclarations";
|
|
29
27
|
Order[Order["RenameLabels"] = 27] = "RenameLabels";
|
package/dist/presets.js
CHANGED
|
@@ -36,10 +36,8 @@ var highPreset = {
|
|
|
36
36
|
opaquePredicates: 0.75,
|
|
37
37
|
renameVariables: true,
|
|
38
38
|
renameGlobals: true,
|
|
39
|
-
shuffle: true,
|
|
40
39
|
variableMasking: 0.75,
|
|
41
40
|
stringConcealing: true,
|
|
42
|
-
stringCompression: true,
|
|
43
41
|
stringEncoding: true,
|
|
44
42
|
stringSplitting: 0.75,
|
|
45
43
|
astScrambler: true,
|
|
@@ -80,7 +78,6 @@ var mediumPreset = {
|
|
|
80
78
|
objectExtraction: true,
|
|
81
79
|
renameVariables: true,
|
|
82
80
|
renameGlobals: true,
|
|
83
|
-
shuffle: true,
|
|
84
81
|
variableMasking: 0.5,
|
|
85
82
|
stringConcealing: true,
|
|
86
83
|
stringSplitting: 0.25,
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.xorDecodeString = xorDecodeString;
|
|
7
|
+
exports.xorDecodeStringTemplate = void 0;
|
|
8
|
+
exports.xorEncodeString = xorEncodeString;
|
|
9
|
+
var _template = _interopRequireDefault(require("./template.ts"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
11
|
+
function xorEncodeString(str, key) {
|
|
12
|
+
var result = "";
|
|
13
|
+
var boundedKey = (key % 95 + 95) % 95;
|
|
14
|
+
for (var i = 0; i < str.length; i++) {
|
|
15
|
+
var charCode = str.charCodeAt(i);
|
|
16
|
+
var normalized = charCode - 32;
|
|
17
|
+
var shifted = (normalized + boundedKey) % 95;
|
|
18
|
+
result += String.fromCharCode(shifted + 32);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
function xorDecodeString(str, key) {
|
|
23
|
+
var result = "",
|
|
24
|
+
boundedKey = (key % 95 + 95) % 95;
|
|
25
|
+
for (var i = 0; i < str.length; i++) {
|
|
26
|
+
var charCode = str.charCodeAt(i);
|
|
27
|
+
var normalized = charCode - 32;
|
|
28
|
+
var shifted = (normalized - boundedKey + 95) % 95;
|
|
29
|
+
result += String.fromCharCode(shifted + 32);
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
var xorDecodeStringTemplate = exports.xorDecodeStringTemplate = new _template["default"]("function {fnName}(str, key) {\n var result = '', boundedKey = ((key % 95) + 95) % 95;\n\n for (var i = 0; i < str.length; i++) {\n var charCode = str.charCodeAt(i);\n var normalized = charCode - 32;\n var shifted = (normalized - boundedKey + 95) % 95;\n result += String.fromCharCode(shifted + 32);\n }\n\n return result;\n}");
|