obscura-js 1.2.0 → 2.0.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.
Files changed (56) hide show
  1. package/README.md +82 -10
  2. package/dist/bin/obscura_cli.js +2 -1
  3. package/dist/bin/obscura_cli.js.map +1 -1
  4. package/dist/package.json +80 -0
  5. package/dist/src/antiDebug/index.d.ts +2 -2
  6. package/dist/src/antiDebug/index.d.ts.map +1 -1
  7. package/dist/src/antiDebug/index.js.map +1 -1
  8. package/dist/src/antiDebug/integrityTag.d.ts +2 -19
  9. package/dist/src/antiDebug/integrityTag.d.ts.map +1 -1
  10. package/dist/src/antiDebug/integrityTag.js +168 -84
  11. package/dist/src/antiDebug/integrityTag.js.map +1 -1
  12. package/dist/src/antiDebug/nativeBinding.d.ts +2 -2
  13. package/dist/src/antiDebug/nativeBinding.d.ts.map +1 -1
  14. package/dist/src/antiDebug/nativeBinding.js +50 -45
  15. package/dist/src/antiDebug/nativeBinding.js.map +1 -1
  16. package/dist/src/genId.d.ts +15 -5
  17. package/dist/src/genId.d.ts.map +1 -1
  18. package/dist/src/genId.js +50 -12
  19. package/dist/src/genId.js.map +1 -1
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +10 -12
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/obfuscation/cff.d.ts +7 -7
  24. package/dist/src/obfuscation/cff.d.ts.map +1 -1
  25. package/dist/src/obfuscation/cff.js +38 -67
  26. package/dist/src/obfuscation/cff.js.map +1 -1
  27. package/dist/src/obfuscation/deadCode.d.ts +2 -2
  28. package/dist/src/obfuscation/deadCode.d.ts.map +1 -1
  29. package/dist/src/obfuscation/deadCode.js +61 -96
  30. package/dist/src/obfuscation/deadCode.js.map +1 -1
  31. package/dist/src/obfuscation/functionTable.d.ts +2 -2
  32. package/dist/src/obfuscation/functionTable.d.ts.map +1 -1
  33. package/dist/src/obfuscation/functionTable.js +73 -77
  34. package/dist/src/obfuscation/functionTable.js.map +1 -1
  35. package/dist/src/obfuscation/index.d.ts +2 -2
  36. package/dist/src/obfuscation/index.d.ts.map +1 -1
  37. package/dist/src/obfuscation/index.js.map +1 -1
  38. package/dist/src/obfuscation/mba.d.ts +2 -2
  39. package/dist/src/obfuscation/mba.d.ts.map +1 -1
  40. package/dist/src/obfuscation/mba.js +16 -54
  41. package/dist/src/obfuscation/mba.js.map +1 -1
  42. package/dist/src/obfuscation/sequenceExpression.d.ts +3 -3
  43. package/dist/src/obfuscation/sequenceExpression.d.ts.map +1 -1
  44. package/dist/src/obfuscation/sequenceExpression.js +15 -47
  45. package/dist/src/obfuscation/sequenceExpression.js.map +1 -1
  46. package/dist/src/obfuscation/stringPool.d.ts +3 -3
  47. package/dist/src/obfuscation/stringPool.d.ts.map +1 -1
  48. package/dist/src/obfuscation/stringPool.js +152 -79
  49. package/dist/src/obfuscation/stringPool.js.map +1 -1
  50. package/dist/src/swc-utils.d.ts +163 -0
  51. package/dist/src/swc-utils.d.ts.map +1 -0
  52. package/dist/src/swc-utils.js +557 -0
  53. package/dist/src/swc-utils.js.map +1 -0
  54. package/dist/src/types.d.ts +5 -3
  55. package/dist/src/types.d.ts.map +1 -1
  56. package/package.json +3 -10
package/README.md CHANGED
@@ -13,16 +13,88 @@ A JavaScript code protection library inspired by the obfuscation and anti-debugg
13
13
 
14
14
  ## Features
15
15
 
16
- | Category | Pass | Description |
17
- | ----------- | ----------------------- | ------------------------------------------------------------------- |
18
- | Obfuscation | `sequenceExpression` | Flatten `if` blocks into comma-sequence expressions |
19
- | Obfuscation | `mba` | Expand arithmetic into Mixed Boolean Arithmetic (MBA) expressions |
20
- | Obfuscation | `functionTable` | Move function declarations into an indirect table, call by index |
21
- | Obfuscation | `stringPool` | Encrypt all string literals into an LCG-XOR pool |
22
- | Obfuscation | `controlFlowFlattening` | Transform function bodies into flat state machines |
23
- | Obfuscation | `deadCode` | Inject unreachable code blocks |
24
- | Anti-debug | `nativeBinding` | Pre-bind native methods to defend against prototype pollution |
25
- | Anti-debug | `integrityTag` | Attach Symbol-based integrity tags to detect object cloning/replace |
16
+ | Category | Pass | Description |
17
+ | ----------- | ----------------------- | ------------------------------------------------------------------------ |
18
+ | Obfuscation | `sequenceExpression` | Flatten `if` blocks into comma-sequence expressions |
19
+ | Obfuscation | `mba` | Expand arithmetic into Mixed Boolean Arithmetic (MBA) expressions |
20
+ | Obfuscation | `functionTable` | Move function declarations into an indirect table, call by index |
21
+ | Obfuscation | `stringPool` | Encrypt string literals and template literal quasis into an LCG-XOR pool |
22
+ | Obfuscation | `controlFlowFlattening` | Transform function bodies into flat state machines |
23
+ | Obfuscation | `deadCode` | Inject unreachable code blocks |
24
+ | Anti-debug | `nativeBinding` | Pre-bind native methods to defend against prototype pollution |
25
+ | Anti-debug | `integrityTag` | Attach Symbol-based integrity tags to detect object cloning/replace |
26
+
27
+ ## Input Format Support
28
+
29
+ Obscura.js auto-detects the module format of the input file (`sourceType: "unambiguous"`) and handles all three variants:
30
+
31
+ | Format | Example | Notes |
32
+ | ---------------- | ------------------------------ | ----------------------------------------------------------------- |
33
+ | CommonJS (CJS) | `require()` / `module.exports` | `require()` paths are never encrypted to preserve static analysis |
34
+ | ES Modules (ESM) | `import` / `export` | Module specifier strings are never encrypted |
35
+ | JSX | `<Component prop="value" />` | Attribute strings are wrapped in `{}` after encryption |
36
+
37
+ ### Per-pass ESM / CJS behaviour
38
+
39
+ Passes fall into two categories: **format-aware** (contain explicit logic for module syntax) and **format-agnostic** (operate purely on expressions/statements, no module knowledge required).
40
+
41
+ #### Format-aware passes
42
+
43
+ **`functionTable`** — avoids removing functions that are reachable from outside the module.
44
+
45
+ | Pattern | Example | Behaviour |
46
+ | ------------------------------- | ------------------------------- | ------------------------------------------------------------------ |
47
+ | ESM named export | `export { foo }` | `foo` is kept as a top-level declaration; not moved into the table |
48
+ | ESM default export (identifier) | `export default foo` | same |
49
+ | CJS `module.exports` | `module.exports = foo` | same |
50
+ | CJS `module.exports.x` | `module.exports.add = add` | same |
51
+ | CJS `exports.x` | `exports.add = add` | same |
52
+ | CJS object shorthand | `module.exports = { add, mul }` | all referenced names are preserved |
53
+
54
+ **`stringPool`** — selectively skips strings whose values must be preserved for the module system or runtime.
55
+
56
+ | Pattern | Example | Behaviour |
57
+ | -------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------- |
58
+ | ESM import path | `import x from "./mod"` | skipped — bundlers need the literal path |
59
+ | ESM re-export path | `export { x } from "./mod"` / `export * from "./mod"` | skipped |
60
+ | Dynamic import path | `import('./mod')` | skipped — runtime module loader needs the literal |
61
+ | CJS require path | `require("./mod")` | skipped |
62
+ | CJS require.resolve path | `require.resolve("./util")` | skipped |
63
+ | ES2022 string binding name | `import { "foo" as bar }` / `export { x as "name" }` | skipped — spec-mandated string syntax |
64
+ | Tagged template | `` html`<b>${x}</b>` `` | skipped — tag receives a `TemplateStringsArray`, not a plain string |
65
+ | All other strings | `"hello"`, `` `hi ${name}` ``, `{ 'key': v }` | **encrypted** |
66
+
67
+ #### Format-agnostic passes
68
+
69
+ These passes operate on expressions and statements only. They produce valid output for both CJS and ESM input without any module-specific logic.
70
+
71
+ | Pass | What it touches |
72
+ | ----------------------- | --------------------------------------------------- |
73
+ | `sequenceExpression` | `if` statement bodies |
74
+ | `mba` | Binary arithmetic expressions (`+`, `-`, `\|`, `^`) |
75
+ | `controlFlowFlattening` | Function bodies |
76
+ | `deadCode` | Top-level statement boundaries |
77
+ | `nativeBinding` | Prepends `const` bindings for native methods |
78
+ | `integrityTag` | Array and object literals |
79
+
80
+ ### What `stringPool` encrypts
81
+
82
+ | Syntax | Example | Behaviour |
83
+ | ------------------------- | ----------------------- | ----------------------------------------------------------------------------- |
84
+ | String literal | `"hello"` | Replaced with a pool decryption call |
85
+ | Template literal | `` `hello ${x}` `` | Static quasis encrypted; expressions kept as-is; emitted as `+` concatenation |
86
+ | Object / class string key | `{ 'key': v }` | Key flipped to computed syntax `{ [pool()]: v }` |
87
+ | JSX attribute value | `<div className="foo">` | Wrapped in `{pool()}` expression container |
88
+ | `export default "…"` | `export default 'msg'` | Encrypted normally |
89
+
90
+ The following strings are **never** encrypted to avoid breaking the module system:
91
+
92
+ - `import … from "path"`
93
+ - `require("path")` / `require.resolve("path")`
94
+ - `export { x } from "path"`
95
+ - `export * from "path"`
96
+ - ES2022 string binding names — `import { "name" as x }`, `export { x as "name" }`
97
+ - Tagged template literals — `` html`…` `` (the tag function receives a `TemplateStringsArray`)
26
98
 
27
99
  ## Installation
28
100
 
@@ -5,6 +5,7 @@ const fs_1 = require("fs");
5
5
  const path_1 = require("path");
6
6
  const commander_1 = require("commander");
7
7
  const index_1 = require("../src/index");
8
+ const package_json_1 = require("../package.json");
8
9
  // ── ANSI helpers ─────────────────────────────────────────────────────────────
9
10
  // Respect NO_COLOR (https://no-color.org) and FORCE_COLOR env vars.
10
11
  const hasColor = (() => {
@@ -128,7 +129,7 @@ const program = new commander_1.Command();
128
129
  program
129
130
  .name("obscura-js")
130
131
  .description("JavaScript code protection tool — obfuscation & anti-debugging")
131
- .version("1.2.0");
132
+ .version(package_json_1.version);
132
133
  program
133
134
  .command("protect <input>")
134
135
  .description("Protect a JavaScript file")
@@ -1 +1 @@
1
- {"version":3,"file":"obscura_cli.js","sourceRoot":"","sources":["../../bin/obscura_cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"obscura_cli.js","sourceRoot":"","sources":["../../bin/obscura_cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "obscura-js",
3
+ "version": "2.0.0",
4
+ "description": "JavaScript code protection tool — obfuscation & anti-debugging inspired by Google reCAPTCHA",
5
+ "type": "commonjs",
6
+ "main": "dist/src/index.js",
7
+ "types": "dist/src/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "require": {
11
+ "types": "./dist/src/index.d.ts",
12
+ "default": "./dist/src/index.js"
13
+ },
14
+ "import": {
15
+ "types": "./dist/src/index.d.ts",
16
+ "default": "./dist/src/index.js"
17
+ },
18
+ "default": "./dist/src/index.js"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist/",
23
+ "README.md"
24
+ ],
25
+ "sideEffects": false,
26
+ "bin": {
27
+ "obscura-js": "dist/bin/obscura_cli.js"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc && node -e \"require('fs').chmodSync('dist/bin/obscura_cli.js', 0o755)\"",
31
+ "build:watch": "tsc --watch",
32
+ "prepublishOnly": "npm run build && npm test",
33
+ "test": "jest --coverage",
34
+ "lint": "eslint src/ bin/",
35
+ "lint:fix": "eslint src/ bin/ --fix",
36
+ "format": "prettier --write \"src/**/*.ts\" \"bin/**/*.ts\" \"tests/**/*.ts\"",
37
+ "format:check": "prettier --check \"src/**/*.ts\" \"bin/**/*.ts\" \"tests/**/*.ts\"",
38
+ "dev": "ts-node bin/obscura_cli.ts"
39
+ },
40
+ "keywords": [
41
+ "obfuscation",
42
+ "javascript",
43
+ "security",
44
+ "anti-debug",
45
+ "anti-tamper",
46
+ "code-protection",
47
+ "ast",
48
+ "swc"
49
+ ],
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "https://github.com/vientorepublic/obscura-js.git"
53
+ },
54
+ "homepage": "https://github.com/vientorepublic/obscura-js#readme",
55
+ "bugs": {
56
+ "url": "https://github.com/vientorepublic/obscura-js/issues"
57
+ },
58
+ "author": "vientorepublic",
59
+ "license": "MIT",
60
+ "engines": {
61
+ "node": ">=18.0.0"
62
+ },
63
+ "dependencies": {
64
+ "@swc/core": "^1.15.40",
65
+ "commander": "^12.0.0"
66
+ },
67
+ "devDependencies": {
68
+ "@types/jest": "^29.5.12",
69
+ "@types/node": "^20.12.0",
70
+ "@typescript-eslint/eslint-plugin": "^8.59.4",
71
+ "@typescript-eslint/parser": "^8.59.4",
72
+ "eslint": "^8.57.0",
73
+ "eslint-config-prettier": "^10.1.8",
74
+ "jest": "^29.7.0",
75
+ "prettier": "^3.8.3",
76
+ "ts-jest": "^29.1.2",
77
+ "ts-node": "^10.9.2",
78
+ "typescript": "^5.4.5"
79
+ }
80
+ }
@@ -1,4 +1,4 @@
1
- import type * as t from "@babel/types";
1
+ import type { SwcProgram } from "../swc-utils";
2
2
  import type { AntiDebugOptions } from "../types";
3
3
  import { applyIntegrityTag } from "./integrityTag";
4
4
  import { applyNativeBinding } from "./nativeBinding";
@@ -7,5 +7,5 @@ export { applyIntegrityTag, applyNativeBinding };
7
7
  * Run all enabled anti-debugging/tampering passes in order.
8
8
  * Each pass is opt-in: pass `false` to skip it.
9
9
  */
10
- export declare function applyAntiDebug(ast: t.File, options: AntiDebugOptions | undefined, appliedPasses: string[]): void;
10
+ export declare function applyAntiDebug(ast: SwcProgram, options: AntiDebugOptions | undefined, appliedPasses: string[]): void;
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/antiDebug/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,CAAC,CAAC,IAAI,EACX,OAAO,EAAE,gBAAgB,YAAK,EAC9B,aAAa,EAAE,MAAM,EAAE,GACtB,IAAI,CASN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/antiDebug/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,gBAAgB,YAAK,EAC9B,aAAa,EAAE,MAAM,EAAE,GACtB,IAAI,CASN"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/antiDebug/index.ts"],"names":[],"mappings":";;;AAWA,wCAaC;AAtBD,iDAAmD;AAG1C,kGAHA,gCAAiB,OAGA;AAF1B,mDAAqD;AAEzB,mGAFnB,kCAAkB,OAEmB;AAE9C;;;GAGG;AACH,SAAgB,cAAc,CAC5B,GAAW,EACX,UAA4B,EAAE,EAC9B,aAAuB;IAEvB,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,IAAA,kCAAkB,EAAC,GAAG,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACrD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,IAAA,gCAAiB,EAAC,GAAG,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACnD,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/antiDebug/index.ts"],"names":[],"mappings":";;;AAWA,wCAaC;AAtBD,iDAAmD;AAG1C,kGAHA,gCAAiB,OAGA;AAF1B,mDAAqD;AAEzB,mGAFnB,kCAAkB,OAEmB;AAE9C;;;GAGG;AACH,SAAgB,cAAc,CAC5B,GAAe,EACf,UAA4B,EAAE,EAC9B,aAAuB;IAEvB,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACpC,IAAA,kCAAkB,EAAC,GAAG,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACrD,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,KAAK,EAAE,CAAC;QACnC,IAAA,gCAAiB,EAAC,GAAG,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QACnD,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
@@ -1,21 +1,4 @@
1
- import * as t from "@babel/types";
1
+ import type { SwcProgram } from "../swc-utils";
2
2
  import type { IntegrityTagOptions } from "../types";
3
- /**
4
- * Pass: Symbol-based Integrity Tag
5
- *
6
- * Attaches a `Symbol(<description>)` integrity check value to every
7
- * array/object literal in the AST. At runtime, code can verify the
8
- * symbol is present to detect tampering (cloning, serialisation, etc.).
9
- *
10
- * The runtime helper `__obscura_tag` is prepended to the output:
11
- *
12
- * const __obscura_sym = Symbol('jas');
13
- * function __obscura_tag(v, checksum) {
14
- * Object.defineProperty(v, __obscura_sym, { value: checksum, enumerable: false });
15
- * return v;
16
- * }
17
- *
18
- * Arrays are replaced by: __obscura_tag([...], <checksum>)
19
- */
20
- export declare function applyIntegrityTag(ast: t.File, options?: IntegrityTagOptions): void;
3
+ export declare function applyIntegrityTag(ast: SwcProgram, options?: IntegrityTagOptions): void;
21
4
  //# 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;AAGpD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAqEtF"}
1
+ {"version":3,"file":"integrityTag.d.ts","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAqEpD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI,CAsI1F"}
@@ -1,110 +1,194 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
2
  Object.defineProperty(exports, "__esModule", { value: true });
39
3
  exports.applyIntegrityTag = applyIntegrityTag;
40
- const traverse_1 = __importDefault(require("@babel/traverse"));
41
- const t = __importStar(require("@babel/types"));
4
+ const swc_utils_1 = require("../swc-utils");
5
+ const core_1 = require("@swc/core");
42
6
  const genId_1 = require("../genId");
43
7
  /**
44
8
  * Pass: Symbol-based Integrity Tag
45
9
  *
46
- * Attaches a `Symbol(<description>)` integrity check value to every
47
- * array/object literal in the AST. At runtime, code can verify the
48
- * symbol is present to detect tampering (cloning, serialisation, etc.).
10
+ * Wraps every array (and optionally object) literal with a verify+tag pair:
49
11
  *
50
- * The runtime helper `__obscura_tag` is prepended to the output:
12
+ * _0xVerify(_0xTag([...], checksum, kind))
51
13
  *
52
- * const __obscura_sym = Symbol('jas');
53
- * function __obscura_tag(v, checksum) {
54
- * Object.defineProperty(v, __obscura_sym, { value: checksum, enumerable: false });
55
- * return v;
56
- * }
14
+ * Three checksum kinds:
15
+ * 0 — length-based array (mixed/non-literal elements)
16
+ * 1 content-based array (all elements are scalar literals)
17
+ * 2 — property-count-based object
57
18
  *
58
- * Arrays are replaced by: __obscura_tag([...], <checksum>)
19
+ * At creation time _0xVerify checks that Object.defineProperty successfully
20
+ * attached the Symbol, catching Symbol/defineProperty override attacks.
21
+ * The emitted _0xVerify function is also available for explicit post-creation
22
+ * verification elsewhere in the obfuscated output.
23
+ */
24
+ /** Returns true when all array elements are scalar literals (no spreads). */
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ function isPureLiteralArray(elements) {
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ return elements.every((el) => {
29
+ if (el === null)
30
+ return true; // sparse hole
31
+ if (el.spread)
32
+ return false; // spread element
33
+ const expr = el.expression ?? el;
34
+ return (expr.type === "NumericLiteral" ||
35
+ expr.type === "BooleanLiteral" ||
36
+ expr.type === "StringLiteral" ||
37
+ expr.type === "NullLiteral");
38
+ });
39
+ }
40
+ /**
41
+ * Content checksum for pure-literal arrays.
42
+ * Must stay in sync with the runtime formula emitted inside _0xVerify.
59
43
  */
44
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
+ function contentChecksum(elements, K1, K2) {
46
+ let acc = K1;
47
+ for (const el of elements) {
48
+ const expr = el?.expression ?? el ?? null;
49
+ let val;
50
+ if (!expr || expr.type === "NullLiteral") {
51
+ val = 0;
52
+ }
53
+ else if (expr.type === "NumericLiteral") {
54
+ val = (expr.value & 0xffff) >>> 0;
55
+ }
56
+ else if (expr.type === "BooleanLiteral") {
57
+ val = expr.value ? 1 : 0;
58
+ }
59
+ else if (expr.type === "StringLiteral") {
60
+ val = expr.value.charCodeAt(0) & 0xffff;
61
+ }
62
+ else {
63
+ val = 0;
64
+ }
65
+ acc = (((acc ^ val) * K2) ^ (acc >>> 3)) >>> 0;
66
+ }
67
+ return (((acc ^ K1) * K2) ^ (K1 >>> 3)) >>> 0;
68
+ }
69
+ /** Length / property-count checksum for arrays and objects. */
70
+ function lengthChecksum(len, K1, K2) {
71
+ return (((len ^ K1) * K2) ^ (K1 >>> 3)) >>> 0;
72
+ }
60
73
  function applyIntegrityTag(ast, options = {}) {
61
- // Randomize Symbol description when not explicitly provided — avoids a fixed "jas" fingerprint
62
74
  const defaultDesc = Math.floor(Math.random() * 0xffffffff)
63
75
  .toString(36)
64
76
  .slice(0, 6);
65
77
  const description = options.tagDescription ?? defaultDesc;
78
+ const tagObjects = options.tagObjects !== false; // default: true
66
79
  const symVar = (0, genId_1.genId)();
67
80
  const tagFn = (0, genId_1.genId)();
68
- // Randomized mixing constants for checksum computation
69
- const K1 = (Math.floor(Math.random() * 0xffff) | 1) >>> 0; // odd, non-zero
81
+ const verifyFn = (0, genId_1.genId)();
82
+ const K1 = (Math.floor(Math.random() * 0xffff) | 1) >>> 0;
70
83
  const K2 = (Math.floor(Math.random() * 0xffff) | 1) >>> 0;
71
- let hasArrays = false;
72
- (0, traverse_1.default)(ast, {
84
+ let hasTaggable = false;
85
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
+ function isInsideTagFn(parent) {
87
+ return (swc_utils_1.t.isCallExpression(parent) &&
88
+ swc_utils_1.t.isIdentifier(parent.callee) && // eslint-disable-line @typescript-eslint/no-explicit-any
89
+ parent.callee.value === tagFn // eslint-disable-line @typescript-eslint/no-explicit-any
90
+ );
91
+ }
92
+ /** Emit _0xVerify(_0xTag(cloned, checksum, kind)) in place of path.node. */
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ function emitTagged(path, checksum, kind) {
95
+ path.replaceWith(swc_utils_1.t.callExpression(swc_utils_1.t.identifier(verifyFn), [
96
+ swc_utils_1.t.callExpression(swc_utils_1.t.identifier(tagFn), [
97
+ swc_utils_1.t.cloneNode(path.node, true),
98
+ swc_utils_1.t.numericLiteral(checksum),
99
+ swc_utils_1.t.numericLiteral(kind),
100
+ ]),
101
+ ]));
102
+ hasTaggable = true;
103
+ }
104
+ (0, swc_utils_1.traverse)(ast, {
73
105
  ArrayExpression(path) {
74
- // Skip if already tagged or inside the helper declarations
75
- if (t.isCallExpression(path.parent))
106
+ if (isInsideTagFn(path.parent))
76
107
  return;
77
- // Multi-step checksum: mix element count with two random constants
78
- const len = path.node.elements.length;
79
- const checksum = (((len ^ K1) * K2) ^ (K1 >>> 3)) >>> 0;
80
- path.replaceWith(t.callExpression(t.identifier(tagFn), [
81
- t.cloneNode(path.node, true),
82
- t.numericLiteral(checksum),
83
- ]));
84
- hasArrays = true;
108
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
109
+ const elements = path.node.elements;
110
+ const pure = isPureLiteralArray(elements);
111
+ const checksum = pure
112
+ ? contentChecksum(elements, K1, K2)
113
+ : lengthChecksum(elements.length, K1, K2);
114
+ emitTagged(path, checksum, pure ? 1 : 0);
115
+ },
116
+ ObjectExpression(path) {
117
+ if (!tagObjects)
118
+ return;
119
+ if (isInsideTagFn(path.parent))
120
+ return;
121
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
122
+ const properties = path.node.properties;
123
+ // Skip objects with spread elements — runtime key count would differ
124
+ if (properties.some((p) => p.type === "SpreadElement"))
125
+ return; // eslint-disable-line @typescript-eslint/no-explicit-any
126
+ const checksum = lengthChecksum(properties.length, K1, K2);
127
+ emitTagged(path, checksum, 2);
85
128
  },
86
129
  });
87
- if (!hasArrays)
130
+ if (!hasTaggable)
88
131
  return;
89
- // const __obscura_sym = Symbol('jas');
90
- const symDecl = t.variableDeclaration("const", [
91
- t.variableDeclarator(t.identifier(symVar), t.callExpression(t.identifier("Symbol"), [t.stringLiteral(description)])),
92
- ]);
93
- // function __obscura_tag(v, checksum) {
94
- // Object.defineProperty(v, __obscura_sym, { value: checksum, enumerable: false });
95
- // return v;
96
- // }
97
- const tagDecl = t.functionDeclaration(t.identifier(tagFn), [t.identifier("v"), t.identifier("checksum")], t.blockStatement([
98
- t.expressionStatement(t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("defineProperty")), [
99
- t.identifier("v"),
100
- t.identifier(symVar),
101
- t.objectExpression([
102
- t.objectProperty(t.identifier("value"), t.identifier("checksum")),
103
- t.objectProperty(t.identifier("enumerable"), t.booleanLiteral(false)),
104
- ]),
105
- ])),
106
- t.returnStatement(t.identifier("v")),
107
- ]));
108
- ast.program.body.unshift(tagDecl, symDecl);
132
+ // ── Emit helpers via source parse ─────────────────────────────────────────
133
+ // Simpler and less error-prone than manual SWC AST construction.
134
+ // K1, K2 are embedded as numeric literals; symVar/tagFn/verifyFn as identifiers.
135
+ const symSrc = `const ${symVar} = Symbol(${JSON.stringify(description)});`;
136
+ const tagSrc = `function ${tagFn}(v, checksum, kind) {
137
+ Object.defineProperty(v, ${symVar}, {
138
+ value: [checksum, kind],
139
+ enumerable: false,
140
+ configurable: false,
141
+ writable: false
142
+ });
143
+ return v;
144
+ }`;
145
+ // _0xVerify recomputes the stored checksum from live state and corrupts the
146
+ // structure if the tag is absent or the checksum mismatches.
147
+ // kind 0 = length array, 1 = content array, 2 = property-count object.
148
+ const verifySrc = `function ${verifyFn}(v) {
149
+ var _tag = v[${symVar}];
150
+ if (_tag === undefined || _tag === null) {
151
+ if (Array.isArray(v)) {
152
+ for (var _ci = 0; _ci < v.length; _ci++) v[_ci] = 0;
153
+ } else {
154
+ var _ck = Object.keys(v);
155
+ for (var _cj = 0; _cj < _ck.length; _cj++) delete v[_ck[_cj]];
156
+ }
157
+ return v;
158
+ }
159
+ var _cs = _tag[0]; var _kind = _tag[1]; var _expected;
160
+ if (_kind === 1) {
161
+ var _acc = ${K1};
162
+ for (var _vi = 0; _vi < v.length; _vi++) {
163
+ var _el = v[_vi];
164
+ var _val = typeof _el === 'number' ? (_el & 0xffff) >>> 0
165
+ : typeof _el === 'boolean' ? (_el ? 1 : 0)
166
+ : typeof _el === 'string' ? _el.charCodeAt(0) & 0xffff : 0;
167
+ _acc = (((_acc ^ _val) * ${K2}) ^ (_acc >>> 3)) >>> 0;
168
+ }
169
+ _expected = (((_acc ^ ${K1}) * ${K2}) ^ (${K1} >>> 3)) >>> 0;
170
+ } else if (_kind === 2) {
171
+ var _len = Object.keys(v).length;
172
+ _expected = (((_len ^ ${K1}) * ${K2}) ^ (${K1} >>> 3)) >>> 0;
173
+ } else {
174
+ _expected = (((v.length ^ ${K1}) * ${K2}) ^ (${K1} >>> 3)) >>> 0;
175
+ }
176
+ if (_cs !== _expected) {
177
+ if (Array.isArray(v)) {
178
+ for (var _di = 0; _di < v.length; _di++) v[_di] = 0;
179
+ } else {
180
+ var _dk = Object.keys(v);
181
+ for (var _dj = 0; _dj < _dk.length; _dj++) delete v[_dk[_dj]];
182
+ }
183
+ }
184
+ return v;
185
+ }`;
186
+ const symDecl = (0, core_1.parseSync)(symSrc, { syntax: "ecmascript" }).body[0];
187
+ const tagDecl = (0, core_1.parseSync)(tagSrc, { syntax: "ecmascript" }).body[0];
188
+ const verifyDecl = (0, core_1.parseSync)(verifySrc, { syntax: "ecmascript" })
189
+ .body[0];
190
+ // tagFn and verifyFn are function declarations (hoisted). symVar (const) is
191
+ // placed at body[2] so it is initialized before any tagged value is created.
192
+ ast.body.unshift(tagDecl, verifyDecl, symDecl); // eslint-disable-line @typescript-eslint/no-explicit-any
109
193
  }
110
194
  //# sourceMappingURL=integrityTag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrityTag.js","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrityTag.js","sourceRoot":"","sources":["../../../src/antiDebug/integrityTag.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as t from "@babel/types";
1
+ import type { SwcProgram } from "../swc-utils";
2
2
  import type { NativeBindingOptions } from "../types";
3
3
  /**
4
4
  * Pass: Native Method Binding
@@ -11,5 +11,5 @@ import type { NativeBindingOptions } from "../types";
11
11
  * const __obscura_Math_floor = Math.floor.bind(Math);
12
12
  * const __obscura_Math_random = Math.random.bind(Math);
13
13
  */
14
- export declare function applyNativeBinding(ast: t.File, options?: NativeBindingOptions): void;
14
+ export declare function applyNativeBinding(ast: SwcProgram, options?: NativeBindingOptions): void;
15
15
  //# sourceMappingURL=nativeBinding.d.ts.map