obscura-js 0.1.1 → 0.3.0

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.
@@ -7,15 +7,15 @@ import type { IntegrityTagOptions } from "../types";
7
7
  * array/object literal in the AST. At runtime, code can verify the
8
8
  * symbol is present to detect tampering (cloning, serialisation, etc.).
9
9
  *
10
- * The runtime helper `__haze_tag` is prepended to the output:
10
+ * The runtime helper `__obscura_tag` is prepended to the output:
11
11
  *
12
- * const __haze_sym = Symbol('jas');
13
- * function __haze_tag(v, checksum) {
14
- * Object.defineProperty(v, __haze_sym, { value: checksum, enumerable: false });
12
+ * const __obscura_sym = Symbol('jas');
13
+ * function __obscura_tag(v, checksum) {
14
+ * Object.defineProperty(v, __obscura_sym, { value: checksum, enumerable: false });
15
15
  * return v;
16
16
  * }
17
17
  *
18
- * Arrays are replaced by: __haze_tag([...], <checksum>)
18
+ * Arrays are replaced by: __obscura_tag([...], <checksum>)
19
19
  */
20
20
  export declare function applyIntegrityTag(ast: t.File, options?: IntegrityTagOptions): void;
21
21
  //# sourceMappingURL=integrityTag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrityTag.d.ts","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI,CA2DtF"}
1
+ {"version":3,"file":"integrityTag.d.ts","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAqEtF"}
@@ -46,42 +46,51 @@ const t = __importStar(require("@babel/types"));
46
46
  * array/object literal in the AST. At runtime, code can verify the
47
47
  * symbol is present to detect tampering (cloning, serialisation, etc.).
48
48
  *
49
- * The runtime helper `__haze_tag` is prepended to the output:
49
+ * The runtime helper `__obscura_tag` is prepended to the output:
50
50
  *
51
- * const __haze_sym = Symbol('jas');
52
- * function __haze_tag(v, checksum) {
53
- * Object.defineProperty(v, __haze_sym, { value: checksum, enumerable: false });
51
+ * const __obscura_sym = Symbol('jas');
52
+ * function __obscura_tag(v, checksum) {
53
+ * Object.defineProperty(v, __obscura_sym, { value: checksum, enumerable: false });
54
54
  * return v;
55
55
  * }
56
56
  *
57
- * Arrays are replaced by: __haze_tag([...], <checksum>)
57
+ * Arrays are replaced by: __obscura_tag([...], <checksum>)
58
58
  */
59
59
  function applyIntegrityTag(ast, options = {}) {
60
- const description = options.tagDescription ?? "jas";
61
- const symVar = "__haze_sym";
62
- const tagFn = "__haze_tag";
60
+ // Randomize Symbol description when not explicitly provided — avoids a fixed "jas" fingerprint
61
+ const defaultDesc = Math.floor(Math.random() * 0xffffffff)
62
+ .toString(36)
63
+ .slice(0, 6);
64
+ const description = options.tagDescription ?? defaultDesc;
65
+ const symVar = "__obscura_sym";
66
+ const tagFn = "__obscura_tag";
67
+ // Randomized mixing constants for checksum computation
68
+ const K1 = (Math.floor(Math.random() * 0xffff) | 1) >>> 0; // odd, non-zero
69
+ const K2 = (Math.floor(Math.random() * 0xffff) | 1) >>> 0;
63
70
  let hasArrays = false;
64
71
  (0, traverse_1.default)(ast, {
65
72
  ArrayExpression(path) {
66
73
  // Skip if already tagged or inside the helper declarations
67
74
  if (t.isCallExpression(path.parent))
68
75
  return;
69
- const checksum = path.node.elements.length ^ 0xdeadbeef;
76
+ // Multi-step checksum: mix element count with two random constants
77
+ const len = path.node.elements.length;
78
+ const checksum = (((len ^ K1) * K2) ^ (K1 >>> 3)) >>> 0;
70
79
  path.replaceWith(t.callExpression(t.identifier(tagFn), [
71
80
  t.cloneNode(path.node, true),
72
- t.numericLiteral(checksum >>> 0),
81
+ t.numericLiteral(checksum),
73
82
  ]));
74
83
  hasArrays = true;
75
84
  },
76
85
  });
77
86
  if (!hasArrays)
78
87
  return;
79
- // const __haze_sym = Symbol('jas');
88
+ // const __obscura_sym = Symbol('jas');
80
89
  const symDecl = t.variableDeclaration("const", [
81
90
  t.variableDeclarator(t.identifier(symVar), t.callExpression(t.identifier("Symbol"), [t.stringLiteral(description)])),
82
91
  ]);
83
- // function __haze_tag(v, checksum) {
84
- // Object.defineProperty(v, __haze_sym, { value: checksum, enumerable: false });
92
+ // function __obscura_tag(v, checksum) {
93
+ // Object.defineProperty(v, __obscura_sym, { value: checksum, enumerable: false });
85
94
  // return v;
86
95
  // }
87
96
  const tagDecl = t.functionDeclaration(t.identifier(tagFn), [t.identifier("v"), t.identifier("checksum")], t.blockStatement([
@@ -1 +1 @@
1
- {"version":3,"file":"integrityTag.js","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,8CA2DC;AAhFD,+DAAuC;AACvC,gDAAkC;AAGlC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,iBAAiB,CAAC,GAAW,EAAE,UAA+B,EAAE;IAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;IACpD,MAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,MAAM,KAAK,GAAG,YAAY,CAAC;IAE3B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAA,kBAAQ,EAAC,GAAG,EAAE;QACZ,eAAe,CAAC,IAAI;YAClB,2DAA2D;YAC3D,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,OAAO;YAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;YACxD,IAAI,CAAC,WAAW,CACd,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACpC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;gBAC5B,CAAC,CAAC,cAAc,CAAC,QAAQ,KAAK,CAAC,CAAC;aACjC,CAAC,CACH,CAAC;YACF,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,oCAAoC;IACpC,MAAM,OAAO,GAAG,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;QAC7C,CAAC,CAAC,kBAAkB,CAClB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EACpB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CACzE;KACF,CAAC,CAAC;IAEH,qCAAqC;IACrC,kFAAkF;IAClF,cAAc;IACd,IAAI;IACJ,MAAM,OAAO,GAAG,CAAC,CAAC,mBAAmB,CACnC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EACnB,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC7C,CAAC,CAAC,cAAc,CAAC;QACf,CAAC,CAAC,mBAAmB,CACnB,CAAC,CAAC,cAAc,CACd,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAC1E;YACE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YACjB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YACpB,CAAC,CAAC,gBAAgB,CAAC;gBACjB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBACjE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACtE,CAAC;SACH,CACF,CACF;QACD,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACrC,CAAC,CACH,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,IAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"integrityTag.js","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@ import type { NativeBindingOptions } from "../types";
8
8
  * cannot affect these captured references.
9
9
  *
10
10
  * Example output:
11
- * const __haze_Math_floor = Math.floor.bind(Math);
12
- * const __haze_Math_random = Math.random.bind(Math);
11
+ * const __obscura_Math_floor = Math.floor.bind(Math);
12
+ * const __obscura_Math_random = Math.random.bind(Math);
13
13
  */
14
14
  export declare function applyNativeBinding(ast: t.File, options?: NativeBindingOptions): void;
15
15
  //# sourceMappingURL=nativeBinding.d.ts.map
@@ -54,8 +54,8 @@ const DEFAULT_METHODS = [
54
54
  * cannot affect these captured references.
55
55
  *
56
56
  * Example output:
57
- * const __haze_Math_floor = Math.floor.bind(Math);
58
- * const __haze_Math_random = Math.random.bind(Math);
57
+ * const __obscura_Math_floor = Math.floor.bind(Math);
58
+ * const __obscura_Math_random = Math.random.bind(Math);
59
59
  */
60
60
  function applyNativeBinding(ast, options = {}) {
61
61
  const methods = options.methods ?? DEFAULT_METHODS;
@@ -63,7 +63,7 @@ function applyNativeBinding(ast, options = {}) {
63
63
  const parts = methodPath.split(".");
64
64
  // receiver is the object before the last segment (e.g. Math for Math.floor)
65
65
  const receiverPath = parts.slice(0, -1).join(".");
66
- const constName = `__haze_${parts.join("_")}`;
66
+ const constName = `__obscura_${parts.join("_")}`;
67
67
  // Build member expression: Math.floor
68
68
  const memberExpr = parts.reduce((acc, part) => t.memberExpression(acc, t.identifier(part)), t.identifier(parts[0]));
69
69
  // Actually rebuild correctly:
@@ -1 +1 @@
1
- {"version":3,"file":"nativeBinding.js","sourceRoot":"","sources":["../../../src/antiDebug/nativeBinding.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,gDAsCC;AAhED,gDAAkC;AAGlC,gDAAgD;AAChD,MAAM,eAAe,GAAG;IACtB,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,uBAAuB;IACvB,aAAa;IACb,uBAAuB;IACvB,yBAAyB;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB,CAAC,GAAW,EAAE,UAAgC,EAAE;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IAEnD,MAAM,YAAY,GAA4B,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,4EAA4E;QAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAE9C,sCAAsC;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAC1D,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACF,8BAA8B;QAC9B,IAAI,GAAG,GAAiB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,mDAAmD;QACnD,IAAI,QAAQ,GAAiB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,iDAAiD;QAClE,KAAK,YAAY,CAAC;QAElB,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE7F,OAAO,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACpC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;SACxD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEF,GAAG,CAAC,OAAO,CAAC,IAAsB,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"nativeBinding.js","sourceRoot":"","sources":["../../../src/antiDebug/nativeBinding.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,gDAsCC;AAhED,gDAAkC;AAGlC,gDAAgD;AAChD,MAAM,eAAe,GAAG;IACtB,YAAY;IACZ,aAAa;IACb,WAAW;IACX,YAAY;IACZ,uBAAuB;IACvB,aAAa;IACb,uBAAuB;IACvB,yBAAyB;CAC1B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB,CAAC,GAAW,EAAE,UAAgC,EAAE;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;IAEnD,MAAM,YAAY,GAA4B,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,4EAA4E;QAC5E,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,aAAa,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAEjD,sCAAsC;QACtC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAC1D,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACvB,CAAC;QACF,8BAA8B;QAC9B,IAAI,GAAG,GAAiB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,mDAAmD;QACnD,IAAI,QAAQ,GAAiB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,iDAAiD;QAClE,KAAK,YAAY,CAAC;QAElB,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE7F,OAAO,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACpC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC;SACxD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEF,GAAG,CAAC,OAAO,CAAC,IAAsB,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC;AAC/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cff.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/cff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,CAAC,IAAI,EACX,OAAO,GAAE,4BAAiC,GACzC,IAAI,CAmFN"}
1
+ {"version":3,"file":"cff.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/cff.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAE7D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,CAAC,IAAI,EACX,OAAO,GAAE,4BAAiC,GACzC,IAAI,CA2FN"}
@@ -63,7 +63,7 @@ const t = __importStar(require("@babel/types"));
63
63
  */
64
64
  function applyControlFlowFlattening(ast, options = {}) {
65
65
  const passes = options.passes ?? 1;
66
- const stateVar = "__haze_s";
66
+ const stateVar = "__obscura_s";
67
67
  /**
68
68
  * If `stmt` is a let/const VariableDeclaration, extract the declarators into
69
69
  * `hoisted` (as var-declared names only) and return ExpressionStatements for
@@ -100,21 +100,29 @@ function applyControlFlowFlattening(ast, options = {}) {
100
100
  if (body.some((s) => t.isSwitchStatement(s)))
101
101
  return;
102
102
  const hoisted = [];
103
- const cases = body.map((stmt, idx) => {
104
- const nextState = idx === body.length - 1 ? t.numericLiteral(-1) : t.numericLiteral(idx + 1);
103
+ // Fisher-Yates shuffle to assign random case numbers (not sequential)
104
+ const stateNums = Array.from({ length: body.length }, (_, i) => i);
105
+ for (let i = stateNums.length - 1; i > 0; i--) {
106
+ const j = Math.floor(Math.random() * (i + 1));
107
+ [stateNums[i], stateNums[j]] = [stateNums[j], stateNums[i]];
108
+ }
109
+ const cases = body.map((stmt, stepIdx) => {
110
+ const actualState = stateNums[stepIdx];
111
+ const nextActual = stepIdx === body.length - 1 ? -1 : stateNums[stepIdx + 1];
112
+ const nextState = t.numericLiteral(nextActual);
105
113
  const converted = extractHoisted(stmt, hoisted);
106
114
  const caseBody = [];
107
115
  if (!t.isEmptyStatement(converted))
108
116
  caseBody.push(converted);
109
117
  caseBody.push(t.expressionStatement(t.assignmentExpression("=", t.identifier(stateVar), nextState)), t.breakStatement());
110
- return t.switchCase(t.numericLiteral(idx), caseBody);
118
+ return t.switchCase(t.numericLiteral(actualState), caseBody);
111
119
  });
112
120
  // default: return;
113
121
  cases.push(t.switchCase(null, [t.returnStatement()]));
114
122
  const dispatcher = t.whileStatement(t.booleanLiteral(true), t.blockStatement([t.switchStatement(t.identifier(stateVar), cases)]));
115
123
  const prelude = [
116
124
  t.variableDeclaration("let", [
117
- t.variableDeclarator(t.identifier(stateVar), t.numericLiteral(0)),
125
+ t.variableDeclarator(t.identifier(stateVar), t.numericLiteral(stateNums[0])),
118
126
  ]),
119
127
  ];
120
128
  if (hoisted.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"cff.js","sourceRoot":"","sources":["../../../src/obfuscation/cff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cff.js","sourceRoot":"","sources":["../../../src/obfuscation/cff.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,9 @@ import type { DeadCodeOptions } from "../types";
3
3
  /**
4
4
  * Pass: Dead Code Injection
5
5
  *
6
- * Inserts unreachable/useless code blocks throughout the program body to
7
- * inflate file size and confuse static analysis tools.
6
+ * Inserts unreachable/useless code blocks throughout the program body AND
7
+ * inside function bodies to inflate file size and confuse static analysis.
8
+ * Templates use opaque predicates requiring multi-step analysis to refute.
8
9
  */
9
10
  export declare function applyDeadCode(ast: t.File, options?: DeadCodeOptions): void;
10
11
  //# sourceMappingURL=deadCode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deadCode.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/deadCode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAmChD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAa9E"}
1
+ {"version":3,"file":"deadCode.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/deadCode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAmVhD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI,CAkC9E"}
@@ -32,39 +32,239 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
39
  exports.applyDeadCode = applyDeadCode;
40
+ const traverse_1 = __importDefault(require("@babel/traverse"));
37
41
  const t = __importStar(require("@babel/types"));
38
- /** Dead code expression templates */
42
+ /** Generate a random hex identifier that looks like obfuscated code */
43
+ function randHexId() {
44
+ const a = Math.floor(Math.random() * 0xffff)
45
+ .toString(16)
46
+ .padStart(4, "0");
47
+ const b = Math.floor(Math.random() * 0xffff)
48
+ .toString(16)
49
+ .padStart(4, "0");
50
+ return `_0x${a}${b}`;
51
+ }
52
+ /** Realistic-looking internal variable name (looks like real utility code) */
53
+ const INTERNAL_PREFIXES = [
54
+ "_mask",
55
+ "_shift",
56
+ "_val",
57
+ "_buf",
58
+ "_idx",
59
+ "_key",
60
+ "_hash",
61
+ "_state",
62
+ "_tmp",
63
+ "_acc",
64
+ "_crc",
65
+ "_flag",
66
+ ];
67
+ function randInternalId() {
68
+ const p = INTERNAL_PREFIXES[Math.floor(Math.random() * INTERNAL_PREFIXES.length)];
69
+ const n = Math.floor(Math.random() * 0xfff)
70
+ .toString(16)
71
+ .padStart(3, "0");
72
+ return `${p}_${n}`;
73
+ }
74
+ /** Well-known hash/mixing constants — makes computations look purposeful */
75
+ const MIX_CONSTS = [0x9e3779b9, 0x85ebca6b, 0xc2b2ae35, 0xbf58476d, 0x6b3a4ba9];
76
+ function pickConst() {
77
+ return MIX_CONSTS[Math.floor(Math.random() * MIX_CONSTS.length)];
78
+ }
79
+ /**
80
+ * Dead code statement templates.
81
+ *
82
+ * Each template produces a block that looks like real processing logic but
83
+ * is provably unreachable. Conditions require multi-step static analysis to
84
+ * verify — they cannot be detected by naive pattern matching alone.
85
+ */
39
86
  const DEAD_TEMPLATES = [
40
- () => t.ifStatement(t.binaryExpression("===", t.numericLiteral(0), t.numericLiteral(1)), t.blockStatement([
41
- t.expressionStatement(t.callExpression(t.memberExpression(t.identifier("console"), t.identifier("log")), [
42
- t.stringLiteral("unreachable"),
43
- ])),
44
- ])),
45
- () => t.whileStatement(t.booleanLiteral(false), t.blockStatement([
46
- t.expressionStatement(t.numericLiteral(Math.floor(Math.random() * 0xffff))),
47
- ])),
48
- () => t.variableDeclaration("var", [
49
- t.variableDeclarator(t.identifier(`__dead_${Math.floor(Math.random() * 0xffff).toString(16)}`), t.binaryExpression("&", t.numericLiteral(Math.floor(Math.random() * 0xff)), t.numericLiteral(0))),
50
- ]),
87
+ // T1: Bitmask computation condition checks for a value that was never produced
88
+ // { var _mask_XXX = (A & B) ^ C; if (_mask_XXX === computed+0x1337) { ... } }
89
+ () => {
90
+ const a = Math.floor(Math.random() * 0xffff);
91
+ const b = Math.floor(Math.random() * 0xffff);
92
+ const c = Math.floor(Math.random() * 0xffff);
93
+ const actual = ((a & b) ^ c) | 0;
94
+ const falseTarget = (actual + 0x1337) | 0; // always different from actual
95
+ const id1 = randInternalId();
96
+ const id2 = randInternalId();
97
+ return t.blockStatement([
98
+ t.variableDeclaration("var", [
99
+ t.variableDeclarator(t.identifier(id1), t.binaryExpression("^", t.binaryExpression("&", t.numericLiteral(a), t.numericLiteral(b)), t.numericLiteral(c))),
100
+ ]),
101
+ t.ifStatement(t.binaryExpression("===", t.identifier(id1), t.numericLiteral(falseTarget)), t.blockStatement([
102
+ t.variableDeclaration("var", [
103
+ t.variableDeclarator(t.identifier(id2), t.binaryExpression("|", t.binaryExpression(">>>", t.identifier(id1), t.numericLiteral(16)), t.binaryExpression("&", t.identifier(id1), t.numericLiteral(0xffff)))),
104
+ ]),
105
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(id1), t.binaryExpression("^", t.identifier(id2), t.numericLiteral(pickConst() & 0xffff)))),
106
+ ])),
107
+ ]);
108
+ },
109
+ // T2: Accumulator loop over empty range — stays 0, then guarded as non-zero
110
+ // { var _acc = 0, _i = 0; for (; _i < 0; _i++) { _acc = _acc ^ _i * K; }
111
+ // if (_acc !== 0) { _acc ^= K2; } }
112
+ () => {
113
+ const k = pickConst();
114
+ const accId = randInternalId();
115
+ const iId = randHexId();
116
+ return t.blockStatement([
117
+ t.variableDeclaration("var", [
118
+ t.variableDeclarator(t.identifier(accId), t.numericLiteral(0)),
119
+ t.variableDeclarator(t.identifier(iId), t.numericLiteral(0)),
120
+ ]),
121
+ t.forStatement(null, t.binaryExpression("<", t.identifier(iId), t.numericLiteral(0)), t.updateExpression("++", t.identifier(iId)), t.blockStatement([
122
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(accId), t.binaryExpression(">>>", t.binaryExpression("^", t.identifier(accId), t.binaryExpression("*", t.identifier(iId), t.numericLiteral(k >>> 0))), t.numericLiteral(0)))),
123
+ ])),
124
+ t.ifStatement(t.binaryExpression("!==", t.identifier(accId), t.numericLiteral(0)), t.blockStatement([
125
+ t.expressionStatement(t.assignmentExpression("^=", t.identifier(accId), t.numericLiteral(k & 0xffff))),
126
+ ])),
127
+ ]);
128
+ },
129
+ // T3: Unsigned shift result checked as negative — (x >>> 0) is always >= 0
130
+ // { var _hash = seed ^ K; _hash ^= _hash >>> 16;
131
+ // var _u32 = _hash >>> 0; if (_u32 < 0) { ... } }
132
+ () => {
133
+ const seed = Math.floor(Math.random() * 0xffff);
134
+ const kc = pickConst();
135
+ const id1 = randInternalId();
136
+ const id2 = randInternalId();
137
+ const bodyConst = Math.floor(Math.random() * 0xffff);
138
+ return t.blockStatement([
139
+ t.variableDeclaration("var", [
140
+ t.variableDeclarator(t.identifier(id1), t.binaryExpression("^", t.numericLiteral(seed), t.numericLiteral(kc >>> 0))),
141
+ ]),
142
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(id1), t.binaryExpression("^", t.identifier(id1), t.binaryExpression(">>>", t.identifier(id1), t.numericLiteral(16))))),
143
+ t.variableDeclaration("var", [
144
+ t.variableDeclarator(t.identifier(id2), t.binaryExpression(">>>", t.identifier(id1), t.numericLiteral(0))),
145
+ ]),
146
+ // (>>> 0) converts to uint32 — result is NEVER < 0
147
+ t.ifStatement(t.binaryExpression("<", t.identifier(id2), t.numericLiteral(0)), t.blockStatement([
148
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(id1), t.binaryExpression("^", t.identifier(id2), t.numericLiteral(bodyConst)))),
149
+ ])),
150
+ ]);
151
+ },
152
+ // T4: n ^ n is always 0 — threshold check never reached
153
+ // { var _flag = (n ^ n) | 0; if ((_flag >>> 1) >= 0x40000000) { ... } }
154
+ () => {
155
+ const n = Math.floor(Math.random() * 0xffff);
156
+ const id = randInternalId();
157
+ return t.blockStatement([
158
+ t.variableDeclaration("var", [
159
+ t.variableDeclarator(t.identifier(id), t.binaryExpression("|", t.binaryExpression("^", t.numericLiteral(n), t.numericLiteral(n)), t.numericLiteral(0))),
160
+ ]),
161
+ // 0 >>> 1 = 0, which is never >= 0x40000000
162
+ t.ifStatement(t.binaryExpression(">=", t.binaryExpression(">>>", t.identifier(id), t.numericLiteral(1)), t.numericLiteral(0x40000000)), t.blockStatement([
163
+ t.expressionStatement(t.assignmentExpression("+=", t.identifier(id), t.numericLiteral(pickConst() & 0xffff))),
164
+ ])),
165
+ ]);
166
+ },
167
+ // T5: try/catch with dead while — ptr (0x7fffffff) is never less than end (0x1fffffff)
168
+ () => {
169
+ const ptrId = randInternalId();
170
+ const endId = randInternalId();
171
+ const k = pickConst() & 0xffff;
172
+ return t.tryStatement(t.blockStatement([
173
+ t.variableDeclaration("var", [
174
+ t.variableDeclarator(t.identifier(ptrId), t.numericLiteral(0x7fffffff)),
175
+ t.variableDeclarator(t.identifier(endId),
176
+ // 0x7fffffff >>> 2 = 0x1fffffff
177
+ t.binaryExpression(">>>", t.numericLiteral(0x7fffffff), t.numericLiteral(2))),
178
+ ]),
179
+ // 0x7fffffff < 0x1fffffff is always false
180
+ t.whileStatement(t.binaryExpression("<", t.identifier(ptrId), t.identifier(endId)), t.blockStatement([
181
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(ptrId), t.binaryExpression("^", t.binaryExpression(">>>", t.identifier(ptrId), t.numericLiteral(1)), t.numericLiteral(k)))),
182
+ ])),
183
+ ]), t.catchClause(t.identifier("_e"), t.blockStatement([])));
184
+ },
185
+ // T6: switch — value is (base >> shift), cases are base >> shift + 0x100 / 0x200
186
+ // so neither case is ever matched
187
+ () => {
188
+ const base = Math.floor(Math.random() * 0xfe) + 1;
189
+ const shift = (Math.floor(Math.random() * 4) + 4); // 4-7
190
+ const computed = base >> shift; // small value (0-15)
191
+ const case1 = computed + 0x100;
192
+ const case2 = computed + 0x200;
193
+ const varId = randInternalId();
194
+ const tmpId = randHexId();
195
+ return t.blockStatement([
196
+ t.variableDeclaration("var", [
197
+ t.variableDeclarator(t.identifier(varId), t.binaryExpression(">>", t.numericLiteral(base), t.numericLiteral(shift))),
198
+ ]),
199
+ t.switchStatement(t.identifier(varId), [
200
+ t.switchCase(t.numericLiteral(case1), [
201
+ t.variableDeclaration("var", [
202
+ t.variableDeclarator(t.identifier(tmpId), t.binaryExpression("^", t.identifier(varId), t.numericLiteral(pickConst() & 0xffff))),
203
+ ]),
204
+ t.breakStatement(),
205
+ ]),
206
+ t.switchCase(t.numericLiteral(case2), [
207
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(varId), t.numericLiteral(0))),
208
+ t.breakStatement(),
209
+ ]),
210
+ ]),
211
+ ]);
212
+ },
213
+ // T7: Named IIFE performing FNV-like hash — result immediately discarded
214
+ // (function _0xXXXX() { var _hash = seed; _hash ^= _hash >>> 16; _hash = (_hash * K) >>> 0; return _hash; })()
215
+ () => {
216
+ const seed = (Math.floor(Math.random() * 0xffffffff) >>> 0) + 1;
217
+ const fnId = randHexId();
218
+ const resId = randInternalId();
219
+ const k = pickConst() >>> 0;
220
+ return t.expressionStatement(t.callExpression(t.functionExpression(t.identifier(fnId), [], t.blockStatement([
221
+ t.variableDeclaration("var", [
222
+ t.variableDeclarator(t.identifier(resId), t.numericLiteral(seed)),
223
+ ]),
224
+ t.expressionStatement(t.assignmentExpression("^=", t.identifier(resId), t.binaryExpression(">>>", t.identifier(resId), t.numericLiteral(16)))),
225
+ t.expressionStatement(t.assignmentExpression("=", t.identifier(resId), t.binaryExpression(">>>", t.binaryExpression("*", t.identifier(resId), t.numericLiteral(k)), t.numericLiteral(0)))),
226
+ t.returnStatement(t.identifier(resId)),
227
+ ])), []));
228
+ },
51
229
  ];
52
230
  /**
53
231
  * Pass: Dead Code Injection
54
232
  *
55
- * Inserts unreachable/useless code blocks throughout the program body to
56
- * inflate file size and confuse static analysis tools.
233
+ * Inserts unreachable/useless code blocks throughout the program body AND
234
+ * inside function bodies to inflate file size and confuse static analysis.
235
+ * Templates use opaque predicates requiring multi-step analysis to refute.
57
236
  */
58
237
  function applyDeadCode(ast, options = {}) {
59
238
  const targetLines = options.targetLines ?? 50;
60
239
  const body = ast.program.body;
240
+ // Phase 1: inject into the top-level program body
61
241
  let injected = 0;
62
242
  let insertAt = 0;
63
243
  while (injected < targetLines && insertAt <= body.length) {
64
- const template = DEAD_TEMPLATES[injected % DEAD_TEMPLATES.length];
244
+ const template = DEAD_TEMPLATES[Math.floor(Math.random() * DEAD_TEMPLATES.length)];
65
245
  body.splice(insertAt, 0, template());
66
246
  injected++;
67
247
  insertAt += 2; // skip one real statement between injections
68
248
  }
249
+ // Phase 2: inject 1-2 dead statements inside each eligible function body
250
+ // This makes dead code appear nested in real logic, not just top-level noise.
251
+ (0, traverse_1.default)(ast, {
252
+ Function(path) {
253
+ if (!t.isBlockStatement(path.node.body))
254
+ return;
255
+ const fnBody = path.node.body.body;
256
+ // Only inject into non-trivial functions
257
+ if (fnBody.length < 2)
258
+ return;
259
+ const count = Math.floor(Math.random() * 2) + 1; // 1 or 2
260
+ for (let i = 0; i < count; i++) {
261
+ const template = DEAD_TEMPLATES[Math.floor(Math.random() * DEAD_TEMPLATES.length)];
262
+ // Insert near the start (positions 0–2) so it blends with initialization code
263
+ const pos = Math.min(Math.floor(Math.random() * 3), fnBody.length);
264
+ fnBody.splice(pos, 0, template());
265
+ }
266
+ path.skip(); // avoid double-visiting nested functions
267
+ },
268
+ });
69
269
  }
70
270
  //# sourceMappingURL=deadCode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deadCode.js","sourceRoot":"","sources":["../../../src/obfuscation/deadCode.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,sCAaC;AAvDD,gDAAkC;AAGlC,qCAAqC;AACrC,MAAM,cAAc,GAA0B;IAC5C,GAAG,EAAE,CACH,CAAC,CAAC,WAAW,CACX,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EACnE,CAAC,CAAC,cAAc,CAAC;QACf,CAAC,CAAC,mBAAmB,CACnB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;YACjF,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC;SAC/B,CAAC,CACH;KACF,CAAC,CACH;IACH,GAAG,EAAE,CACH,CAAC,CAAC,cAAc,CACd,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,EACvB,CAAC,CAAC,cAAc,CAAC;QACf,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;KAC5E,CAAC,CACH;IACH,GAAG,EAAE,CACH,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE;QAC3B,CAAC,CAAC,kBAAkB,CAClB,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EACzE,CAAC,CAAC,gBAAgB,CAChB,GAAG,EACH,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,EAClD,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CACpB,CACF;KACF,CAAC;CACL,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,UAA2B,EAAE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAqB,CAAC;IAE/C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO,QAAQ,GAAG,WAAW,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrC,QAAQ,EAAE,CAAC;QACX,QAAQ,IAAI,CAAC,CAAC,CAAC,6CAA6C;IAC9D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"deadCode.js","sourceRoot":"","sources":["../../../src/obfuscation/deadCode.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ import type { FunctionTableOptions } from "../types";
11
11
  * foo(1);
12
12
  *
13
13
  * After:
14
- * const __haze_ft = [function foo(x) { return x; }];
15
- * __haze_ft[0](1);
14
+ * const __obscura_ft = [function foo(x) { return x; }];
15
+ * __obscura_ft[0](1);
16
16
  */
17
17
  export declare function applyFunctionTable(ast: t.File, options?: FunctionTableOptions): void;
18
18
  //# sourceMappingURL=functionTable.d.ts.map
@@ -50,12 +50,12 @@ const t = __importStar(require("@babel/types"));
50
50
  * foo(1);
51
51
  *
52
52
  * After:
53
- * const __haze_ft = [function foo(x) { return x; }];
54
- * __haze_ft[0](1);
53
+ * const __obscura_ft = [function foo(x) { return x; }];
54
+ * __obscura_ft[0](1);
55
55
  */
56
56
  function applyFunctionTable(ast, options = {}) {
57
57
  const minFunctions = options.minFunctions ?? 2;
58
- const tableId = "__haze_ft";
58
+ const tableId = "__obscura_ft";
59
59
  // Collect top-level named function declarations first, then remove only if threshold is met
60
60
  const functions = [];
61
61
  const nameToIndex = new Map();
@@ -96,7 +96,7 @@ function applyFunctionTable(ast, options = {}) {
96
96
  });
97
97
  path.remove();
98
98
  }
99
- // Prepend: const __haze_ft = [fn0, fn1, ...]
99
+ // Prepend: const __obscura_ft = [fn0, fn1, ...]
100
100
  const tableDeclaration = t.variableDeclaration("const", [
101
101
  t.variableDeclarator(t.identifier(tableId), t.arrayExpression(functions.map((f) => f.fn))),
102
102
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"functionTable.js","sourceRoot":"","sources":["../../../src/obfuscation/functionTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functionTable.js","sourceRoot":"","sources":["../../../src/obfuscation/functionTable.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,11 @@ import type { MbaOptions } from "../types";
6
6
  * Replaces simple numeric literals and binary expressions with equivalent
7
7
  * MBA expressions, making static analysis significantly harder.
8
8
  *
9
- * Example: `x + y` → `(x ^ y) + 2 * (x & y)`
9
+ * Identities applied:
10
+ * x + y → (x ^ y) + 2*(x & y)
11
+ * x - y → (x ^ y) - 2*(~x & y)
12
+ * x | y → (x ^ y) + (x & y) [bit-disjoint: no carry]
13
+ * x ^ y → (x | y) - (x & y)
10
14
  */
11
15
  export declare function applyMba(ast: t.File, options?: MbaOptions): void;
12
16
  //# sourceMappingURL=mba.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mba.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/mba.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,UAAe,GAAG,IAAI,CAiEpE"}
1
+ {"version":3,"file":"mba.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/mba.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,UAAe,GAAG,IAAI,CA8EpE"}
@@ -45,7 +45,11 @@ const t = __importStar(require("@babel/types"));
45
45
  * Replaces simple numeric literals and binary expressions with equivalent
46
46
  * MBA expressions, making static analysis significantly harder.
47
47
  *
48
- * Example: `x + y` → `(x ^ y) + 2 * (x & y)`
48
+ * Identities applied:
49
+ * x + y → (x ^ y) + 2*(x & y)
50
+ * x - y → (x ^ y) - 2*(~x & y)
51
+ * x | y → (x ^ y) + (x & y) [bit-disjoint: no carry]
52
+ * x ^ y → (x | y) - (x & y)
49
53
  */
50
54
  function applyMba(ast, options = {}) {
51
55
  const rounds = options.rounds ?? 1;
@@ -56,8 +60,7 @@ function applyMba(ast, options = {}) {
56
60
  const { operator, left, right } = path.node;
57
61
  if (!t.isExpression(left) || !t.isExpression(right))
58
62
  return;
59
- // Skip non-numeric-context operators
60
- if (operator !== "+" && operator !== "-")
63
+ if (operator !== "+" && operator !== "-" && operator !== "|" && operator !== "^")
61
64
  return;
62
65
  // Skip string concatenation — MBA identities only hold for integers
63
66
  if (operator === "+" &&
@@ -74,10 +77,18 @@ function applyMba(ast, options = {}) {
74
77
  // x + y ≡ (x ^ y) + 2 * (x & y)
75
78
  replacement = t.binaryExpression("+", t.binaryExpression("^", t.cloneNode(left), t.cloneNode(right)), t.binaryExpression("*", t.numericLiteral(2), t.binaryExpression("&", t.cloneNode(left), t.cloneNode(right))));
76
79
  }
77
- else {
80
+ else if (operator === "-") {
78
81
  // x - y ≡ (x ^ y) - 2 * (~x & y)
79
82
  replacement = t.binaryExpression("-", t.binaryExpression("^", t.cloneNode(left), t.cloneNode(right)), t.binaryExpression("*", t.numericLiteral(2), t.binaryExpression("&", t.unaryExpression("~", t.cloneNode(left)), t.cloneNode(right))));
80
83
  }
84
+ else if (operator === "|") {
85
+ // x | y ≡ (x ^ y) + (x & y)
86
+ replacement = t.binaryExpression("+", t.binaryExpression("^", t.cloneNode(left), t.cloneNode(right)), t.binaryExpression("&", t.cloneNode(left), t.cloneNode(right)));
87
+ }
88
+ else {
89
+ // x ^ y ≡ (x | y) - (x & y)
90
+ replacement = t.binaryExpression("-", t.binaryExpression("|", t.cloneNode(left), t.cloneNode(right)), t.binaryExpression("&", t.cloneNode(left), t.cloneNode(right)));
91
+ }
81
92
  if (!replacement.extra)
82
93
  replacement.extra = {};
83
94
  replacement.extra["mbaExpanded"] = true;
@@ -1 +1 @@
1
- {"version":3,"file":"mba.js","sourceRoot":"","sources":["../../../src/obfuscation/mba.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,4BAiEC;AA7ED,+DAAuC;AACvC,gDAAkC;AAGlC;;;;;;;GAOG;AACH,SAAgB,QAAQ,CAAC,GAAW,EAAE,UAAsB,EAAE;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAA,kBAAQ,EAAC,GAAG,EAAE;YACZ,gBAAgB,EAAE;gBAChB,IAAI,CAAC,IAAI;oBACP,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;oBAE5C,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;wBAAE,OAAO;oBAC5D,qCAAqC;oBACrC,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG;wBAAE,OAAO;oBAEjD,oEAAoE;oBACpE,IACE,QAAQ,KAAK,GAAG;wBAChB,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;4BACtB,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;4BACxB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;4BACzB,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBAE7B,OAAO;oBAET,6BAA6B;oBAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC;wBAAE,OAAO;oBAE7C,IAAI,WAAyB,CAAC;oBAE9B,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;wBACrB,kCAAkC;wBAClC,WAAW,GAAG,CAAC,CAAC,gBAAgB,CAC9B,GAAG,EACH,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAC9D,CAAC,CAAC,gBAAgB,CAChB,GAAG,EACH,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EACnB,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC/D,CACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,mCAAmC;wBACnC,WAAW,GAAG,CAAC,CAAC,gBAAgB,CAC9B,GAAG,EACH,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAC9D,CAAC,CAAC,gBAAgB,CAChB,GAAG,EACH,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EACnB,CAAC,CAAC,gBAAgB,CAChB,GAAG,EACH,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EACzC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CACnB,CACF,CACF,CAAC;oBACJ,CAAC;oBAED,IAAI,CAAC,WAAW,CAAC,KAAK;wBAAE,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC/C,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;oBAExC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC;aACF;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"mba.js","sourceRoot":"","sources":["../../../src/obfuscation/mba.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import type { StringPoolOptions } from "../types";
8
8
  * used in Google reCAPTCHA's string obfuscation.
9
9
  *
10
10
  * Before: "hello"
11
- * After: __haze_sp(0, 4, <seed>)
11
+ * After: __obscura_sp(0, 4, <seed>)
12
12
  */
13
13
  export declare function applyStringPool(ast: t.File, options?: StringPoolOptions): void;
14
14
  //# sourceMappingURL=stringPool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stringPool.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/stringPool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAqBlD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI,CA6IlF"}
1
+ {"version":3,"file":"stringPool.d.ts","sourceRoot":"","sources":["../../../src/obfuscation/stringPool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAqBlD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI,CA8IlF"}
@@ -39,8 +39,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.applyStringPool = applyStringPool;
40
40
  const traverse_1 = __importDefault(require("@babel/traverse"));
41
41
  const t = __importStar(require("@babel/types"));
42
- const POOL_FN = "__haze_sp";
43
- const POOL_VAR = "__haze_pool";
42
+ const POOL_FN = "__obscura_sp";
43
+ const POOL_VAR = "__obscura_pool";
44
44
  /**
45
45
  * XOR-based LCG string encryption matching reCAPTCHA's encrypted string pool.
46
46
  * Each character depends on all previous characters (running key accumulation).
@@ -64,10 +64,11 @@ function encryptString(str, seed) {
64
64
  * used in Google reCAPTCHA's string obfuscation.
65
65
  *
66
66
  * Before: "hello"
67
- * After: __haze_sp(0, 4, <seed>)
67
+ * After: __obscura_sp(0, 4, <seed>)
68
68
  */
69
69
  function applyStringPool(ast, options = {}) {
70
- const seed = options.seed ?? 42;
70
+ // Randomize seed per invocation when not explicitly provided (avoids fixed-seed fingerprint)
71
+ const seed = options.seed ?? Math.floor(Math.random() * 0x7fffff) + 1;
71
72
  const entries = [];
72
73
  const allCiphertext = [];
73
74
  const literalToIndex = new Map();
@@ -99,7 +100,7 @@ function applyStringPool(ast, options = {}) {
99
100
  });
100
101
  if (entries.length === 0)
101
102
  return;
102
- // Replace string literals with __haze_sp(start, len, seed) calls
103
+ // Replace string literals with __obscura_sp(start, len, seed) calls
103
104
  for (const { path, entry } of replacements) {
104
105
  path.replaceWith(t.callExpression(t.identifier(POOL_FN), [
105
106
  t.numericLiteral(entry.start),
@@ -112,10 +113,10 @@ function applyStringPool(ast, options = {}) {
112
113
  t.variableDeclarator(t.identifier(POOL_VAR), t.arrayExpression(allCiphertext.map((b) => t.numericLiteral(b)))),
113
114
  ]);
114
115
  // Decryption function:
115
- // function __haze_sp(start, len, seed) {
116
+ // function __obscura_sp(start, len, seed) {
116
117
  // let key = seed, out = '';
117
118
  // for (let i = 0; i < len; i++) {
118
- // const b = (__haze_pool[start + i] ^ key) & 0x7f;
119
+ // const b = (__obscura_pool[start + i] ^ key) & 0x7f;
119
120
  // out += String.fromCodePoint(b);
120
121
  // key = (key + b) & 0x7f;
121
122
  // }
@@ -1 +1 @@
1
- {"version":3,"file":"stringPool.js","sourceRoot":"","sources":["../../../src/obfuscation/stringPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stringPool.js","sourceRoot":"","sources":["../../../src/obfuscation/stringPool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obscura-js",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "JavaScript code protection tool — obfuscation & anti-debugging inspired by Google reCAPTCHA",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -19,7 +19,7 @@
19
19
  "obscura-js": "dist/bin/haze.js"
20
20
  },
21
21
  "scripts": {
22
- "build": "tsc",
22
+ "build": "tsc && chmod +x dist/bin/haze.js",
23
23
  "build:watch": "tsc --watch",
24
24
  "prepublishOnly": "npm run build && npm test",
25
25
  "test": "jest --coverage",