obscura-js 0.3.1 → 1.1.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.
package/README.md CHANGED
@@ -1,4 +1,8 @@
1
- # obscura-js
1
+ # Obscura.js
2
+
3
+ <img width="2492" height="1266" alt="obscura" src="https://github.com/user-attachments/assets/02d32a27-4503-4c72-94d6-b30c205e422b" />
4
+
5
+ ---
2
6
 
3
7
  A JavaScript code protection library inspired by the obfuscation and anti-debugging techniques used in Google reCAPTCHA.
4
8
 
@@ -19,14 +23,6 @@ A JavaScript code protection library inspired by the obfuscation and anti-debugg
19
23
  | Anti-debug | `nativeBinding` | Pre-bind native methods to defend against prototype pollution |
20
24
  | Anti-debug | `integrityTag` | Attach Symbol-based integrity tags to detect object cloning/replace |
21
25
 
22
- ## Getting Started
23
-
24
- ```bash
25
- npm install
26
- npm run build
27
- npm test
28
- ```
29
-
30
26
  ## Installation
31
27
 
32
28
  ```bash
@@ -35,22 +31,6 @@ npm install obscura-js
35
31
 
36
32
  ## Quick Start
37
33
 
38
- ### API
39
-
40
- ```typescript
41
- import { protect } from "obscura-js";
42
- import { readFileSync } from "fs";
43
-
44
- const source = readFileSync("app.js", "utf-8");
45
-
46
- const { code, appliedPasses } = protect(source);
47
- // All 8 passes are enabled by default
48
-
49
- console.log(appliedPasses);
50
- // ['sequenceExpression', 'mba', 'functionTable', 'stringPool',
51
- // 'controlFlowFlattening', 'deadCode', 'nativeBinding', 'integrityTag']
52
- ```
53
-
54
34
  ### CLI
55
35
 
56
36
  ```bash
@@ -67,6 +47,22 @@ npx obscura-js protect app.js --minify
67
47
  npx obscura-js protect app.js --keep-comments
68
48
  ```
69
49
 
50
+ ### API
51
+
52
+ ```typescript
53
+ import { protect } from "obscura-js";
54
+ import { readFileSync } from "fs";
55
+
56
+ const source = readFileSync("app.js", "utf-8");
57
+
58
+ const { code, appliedPasses } = protect(source);
59
+ // All 8 passes are enabled by default
60
+
61
+ console.log(appliedPasses);
62
+ // ['sequenceExpression', 'mba', 'functionTable', 'stringPool',
63
+ // 'controlFlowFlattening', 'deadCode', 'nativeBinding', 'integrityTag']
64
+ ```
65
+
70
66
  ## API Reference
71
67
 
72
68
  ### `protect(source, options?)`
@@ -74,7 +70,7 @@ npx obscura-js protect app.js --keep-comments
74
70
  | Parameter | Type | Description |
75
71
  | --------- | ------------- | --------------------------------- |
76
72
  | `source` | `string` | JavaScript source code to protect |
77
- | `options` | `HazeOptions` | Optional configuration |
73
+ | `options` | `ObscuraOptions` | Optional configuration |
78
74
 
79
75
  Returns `ProtectResult`:
80
76
 
@@ -85,10 +81,10 @@ interface ProtectResult {
85
81
  }
86
82
  ```
87
83
 
88
- ### `HazeOptions`
84
+ ### `ObscuraOptions`
89
85
 
90
86
  ```typescript
91
- interface HazeOptions {
87
+ interface ObscuraOptions {
92
88
  obfuscation?: {
93
89
  sequenceExpression?: { probability?: number } | false;
94
90
  mba?: { rounds?: number } | false;
@@ -102,7 +98,7 @@ interface HazeOptions {
102
98
  integrityTag?: { tagDescription?: string } | false;
103
99
  };
104
100
  minify?: boolean; // Default: false
105
- stripComments?: boolean; // Default: true — strip all comments from output
101
+ stripComments?: boolean; // Default: true
106
102
  }
107
103
  ```
108
104
 
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=obscura_cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obscura_cli.d.ts","sourceRoot":"","sources":["../../bin/obscura_cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ const commander_1 = require("commander");
7
+ const index_1 = require("../src/index");
8
+ // ── ANSI helpers ─────────────────────────────────────────────────────────────
9
+ // Respect NO_COLOR (https://no-color.org) and FORCE_COLOR env vars.
10
+ const hasColor = (() => {
11
+ if (process.env.NO_COLOR !== undefined)
12
+ return false;
13
+ if (process.env.FORCE_COLOR !== undefined)
14
+ return true;
15
+ return process.stdout.isTTY ?? false;
16
+ })();
17
+ // Unicode box-drawing / symbols need a UTF-8 capable terminal.
18
+ // On Windows, check for modern terminals: Windows Terminal (WT_SESSION),
19
+ // VS Code / other terminal emulators (TERM_PROGRAM), or ConEmu (CONEMUANSI).
20
+ const hasUnicode = (() => {
21
+ if (process.platform !== "win32")
22
+ return true;
23
+ return !!(process.env.WT_SESSION ||
24
+ process.env.TERM_PROGRAM ||
25
+ process.env.CONEMUANSI ||
26
+ process.env.COLORTERM);
27
+ })();
28
+ const c = {
29
+ reset: hasColor ? "\x1b[0m" : "",
30
+ bold: hasColor ? "\x1b[1m" : "",
31
+ dim: hasColor ? "\x1b[2m" : "",
32
+ green: hasColor ? "\x1b[32m" : "",
33
+ cyan: hasColor ? "\x1b[36m" : "",
34
+ yellow: hasColor ? "\x1b[33m" : "",
35
+ gray: hasColor ? "\x1b[90m" : "",
36
+ red: hasColor ? "\x1b[31m" : "",
37
+ white: hasColor ? "\x1b[97m" : "",
38
+ };
39
+ const sym = {
40
+ diamond: hasUnicode ? "\u25C6" : "*",
41
+ check: hasUnicode ? "\u2713" : "+",
42
+ cross: hasUnicode ? "\u2717" : "x",
43
+ done: hasUnicode ? "\u2714" : "*",
44
+ line: hasUnicode ? "\u2500" : "-",
45
+ };
46
+ function formatBytes(n) {
47
+ if (n < 1024)
48
+ return `${n} B`;
49
+ if (n < 1048576)
50
+ return `${(n / 1024).toFixed(1)} KB`;
51
+ return `${(n / 1048576).toFixed(2)} MB`;
52
+ }
53
+ function pad(s, w) {
54
+ return s + " ".repeat(Math.max(0, w - s.length));
55
+ }
56
+ // ── CLI definition ────────────────────────────────────────────────────────────
57
+ const program = new commander_1.Command();
58
+ program
59
+ .name("obscura-js")
60
+ .description("JavaScript code protection tool — obfuscation & anti-debugging")
61
+ .version("1.0.0");
62
+ program
63
+ .command("protect <input>")
64
+ .description("Protect a JavaScript file")
65
+ .option("-o, --output <file>", "Output file (default: <input>.obscura.js)")
66
+ .option("--no-seq", "Disable sequence expression pass")
67
+ .option("--no-mba", "Disable mixed boolean arithmetic pass")
68
+ .option("--no-ft", "Disable indirect function table pass")
69
+ .option("--no-sp", "Disable encrypted string pool pass")
70
+ .option("--no-cff", "Disable control flow flattening pass")
71
+ .option("--no-dead", "Disable dead code injection pass")
72
+ .option("--no-native", "Disable native method binding pass")
73
+ .option("--no-tag", "Disable symbol integrity tag pass")
74
+ .option("--sp-seed <number>", "Seed for the string pool XOR cipher", parseInt)
75
+ .option("--minify", "Minify output (compact whitespace, shorten literals)")
76
+ .option("--keep-comments", "Preserve original comments in output (default: strip all)")
77
+ .action((input, opts) => {
78
+ const t0 = Date.now();
79
+ const inputPath = (0, path_1.resolve)(process.cwd(), input);
80
+ const source = (0, fs_1.readFileSync)(inputPath, "utf-8");
81
+ const options = {
82
+ obfuscation: {
83
+ sequenceExpression: opts["seq"] === false ? false : {},
84
+ mba: opts["mba"] === false ? false : {},
85
+ functionTable: opts["ft"] === false ? false : {},
86
+ stringPool: opts["sp"] === false ? false : { seed: opts["spSeed"] },
87
+ controlFlowFlattening: opts["cff"] === false ? false : {},
88
+ deadCode: opts["dead"] === false ? false : {},
89
+ },
90
+ antiDebug: {
91
+ nativeBinding: opts["native"] === false ? false : {},
92
+ integrityTag: opts["tag"] === false ? false : {},
93
+ },
94
+ minify: opts["minify"] === true,
95
+ stripComments: opts["keepComments"] !== true,
96
+ };
97
+ const { code, appliedPasses } = (0, index_1.protect)(source, options);
98
+ const outputPath = opts["output"]
99
+ ? (0, path_1.resolve)(process.cwd(), opts["output"])
100
+ : inputPath.replace(/\.js$/, "") + ".obscura.js";
101
+ (0, fs_1.writeFileSync)(outputPath, code, "utf-8");
102
+ // ── Output report ─────────────────────────────────────────────────────
103
+ const elapsed = Date.now() - t0;
104
+ const inputBytes = Buffer.byteLength(source, "utf-8");
105
+ const outputBytes = Buffer.byteLength(code, "utf-8");
106
+ const growthPct = (((outputBytes - inputBytes) / inputBytes) * 100).toFixed(0);
107
+ const growthStr = outputBytes >= inputBytes ? `+${growthPct}%` : `${growthPct}%`;
108
+ const inputName = (0, path_1.basename)(inputPath);
109
+ const outputName = (0, path_1.basename)(outputPath);
110
+ const nameW = Math.max(inputName.length, outputName.length);
111
+ const sizeW = Math.max(formatBytes(inputBytes).length, formatBytes(outputBytes).length);
112
+ const OBF_PASSES = [
113
+ "sequenceExpression",
114
+ "mba",
115
+ "functionTable",
116
+ "stringPool",
117
+ "controlFlowFlattening",
118
+ "deadCode",
119
+ ];
120
+ const DBG_PASSES = ["nativeBinding", "integrityTag"];
121
+ const applied = new Set(appliedPasses);
122
+ const passLine = (name) => {
123
+ const on = applied.has(name);
124
+ const mark = on ? `${c.green}${sym.check}${c.reset}` : `${c.red}${sym.cross}${c.reset}`;
125
+ const label = on ? `${c.white}${name}${c.reset}` : `${c.dim}${name}${c.reset}`;
126
+ return ` ${mark} ${label}`;
127
+ };
128
+ const activeFlags = [];
129
+ if (opts["minify"] === true)
130
+ activeFlags.push("minify");
131
+ if (opts["keepComments"] === true)
132
+ activeFlags.push("keep-comments");
133
+ const sep = ` ${c.dim}${sym.line.repeat(46)}${c.reset}`;
134
+ const report = [
135
+ "",
136
+ ` ${c.bold}${c.cyan}${sym.diamond} obscura-js${c.reset}`,
137
+ "",
138
+ sep,
139
+ ` ${c.gray}Input ${c.reset} ${pad(inputName, nameW)} ${c.dim}${pad(formatBytes(inputBytes), sizeW)}${c.reset}`,
140
+ ` ${c.gray}Output ${c.reset} ${pad(outputName, nameW)} ${pad(formatBytes(outputBytes), sizeW)} ${c.yellow}${growthStr}${c.reset}`,
141
+ ` ${c.gray}Elapsed ${c.reset} ${elapsed}ms`,
142
+ ...(activeFlags.length ? [` ${c.gray}Flags ${c.reset} ${activeFlags.join(" ")}`] : []),
143
+ sep,
144
+ "",
145
+ ` ${c.cyan}Obfuscation${c.reset}`,
146
+ ...OBF_PASSES.map(passLine),
147
+ "",
148
+ ` ${c.cyan}Anti-Debug${c.reset}`,
149
+ ...DBG_PASSES.map(passLine),
150
+ "",
151
+ sep,
152
+ ` ${c.green}${sym.done}${c.reset} ${c.bold}Protected successfully${c.reset}`,
153
+ "",
154
+ ];
155
+ console.log(report.join("\n"));
156
+ });
157
+ program.parse(process.argv);
158
+ //# sourceMappingURL=obscura_cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obscura_cli.js","sourceRoot":"","sources":["../../bin/obscura_cli.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { HazeOptions, ProtectResult } from "./types";
2
- export type { HazeOptions, ProtectResult } from "./types";
1
+ import type { ObscuraOptions, ProtectResult } from "./types";
2
+ export type { ObscuraOptions as HazeOptions, ProtectResult } from "./types";
3
3
  export type { ObfuscationOptions, AntiDebugOptions, SequenceExpressionOptions, MbaOptions, FunctionTableOptions, StringPoolOptions, ControlFlowFlatteningOptions, DeadCodeOptions, IntegrityTagOptions, NativeBindingOptions, } from "./types";
4
4
  /**
5
5
  * Protect JavaScript source code by running the configured passes.
@@ -8,5 +8,5 @@ export type { ObfuscationOptions, AntiDebugOptions, SequenceExpressionOptions, M
8
8
  * @param options - Protection configuration
9
9
  * @returns ProtectResult containing the protected code and applied pass names
10
10
  */
11
- export declare function protect(source: string, options?: HazeOptions): ProtectResult;
11
+ export declare function protect(source: string, options?: ObscuraOptions): ProtectResult;
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC1D,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,4BAA4B,EAC5B,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,aAAa,CAwBhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7D,YAAY,EAAE,cAAc,IAAI,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EACjB,4BAA4B,EAC5B,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,aAAa,CAwBnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AA2BA,0BAwBC;AAnDD,0CAAsC;AACtC,iEAAwC;AACxC,+CAAiD;AACjD,2CAA6C;AAiB7C;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,MAAc,EAAE,UAAuB,EAAE;IAC/D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,MAAM,EAAE;QACxB,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,IAAA,8BAAgB,EAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAA,0BAAc,EAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC;IAEtD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC7B,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QACjC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAChC,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AA2BA,0BAwBC;AAnDD,0CAAsC;AACtC,iEAAwC;AACxC,+CAAiD;AACjD,2CAA6C;AAiB7C;;;;;;GAMG;AACH,SAAgB,OAAO,CAAC,MAAc,EAAE,UAA0B,EAAE;IAClE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,cAAK,EAAC,MAAM,EAAE;QACxB,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,CAAC,KAAK,CAAC;KACjB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,IAAA,8BAAgB,EAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAA,0BAAc,EAAC,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC;IAEtD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAQ,EAAC,GAAG,EAAE;QAC7B,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QACjC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAChC,kBAAkB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACjC,CAAC"}
@@ -50,7 +50,7 @@ export interface AntiDebugOptions {
50
50
  integrityTag?: IntegrityTagOptions | false;
51
51
  nativeBinding?: NativeBindingOptions | false;
52
52
  }
53
- export interface HazeOptions {
53
+ export interface ObscuraOptions {
54
54
  obfuscation?: ObfuscationOptions;
55
55
  antiDebug?: AntiDebugOptions;
56
56
  /** Minify the output (removes whitespace and shortens literals). Default: false */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAIlC,uCAAuC;AACvC,MAAM,WAAW,IAAI,CAAC,QAAQ;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC9C;AAID,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAC;IACvD,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IACzB,aAAa,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;IAC7C,UAAU,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;IACvC,qBAAqB,CAAC,EAAE,4BAA4B,GAAG,KAAK,CAAC;IAC7D,QAAQ,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC;CACpC;AAID,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;IAC3C,aAAa,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;CAC9C;AAID,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAIlC,uCAAuC;AACvC,MAAM,WAAW,IAAI,CAAC,QAAQ;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC9C;AAID,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAC;IACvD,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IACzB,aAAa,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;IAC7C,UAAU,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;IACvC,qBAAqB,CAAC,EAAE,4BAA4B,GAAG,KAAK,CAAC;IAC7D,QAAQ,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC;CACpC;AAID,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,mBAAmB,GAAG,KAAK,CAAC;IAC3C,aAAa,CAAC,EAAE,oBAAoB,GAAG,KAAK,CAAC;CAC9C;AAID,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mFAAmF;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obscura-js",
3
- "version": "0.3.1",
3
+ "version": "1.1.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",
@@ -16,10 +16,10 @@
16
16
  ],
17
17
  "sideEffects": false,
18
18
  "bin": {
19
- "obscura-js": "dist/bin/haze.js"
19
+ "obscura-js": "dist/bin/obscura_cli.js"
20
20
  },
21
21
  "scripts": {
22
- "build": "tsc && chmod +x dist/bin/haze.js",
22
+ "build": "tsc && node -e \"require('fs').chmodSync('dist/bin/obscura_cli.js', 0o755)\"",
23
23
  "build:watch": "tsc --watch",
24
24
  "prepublishOnly": "npm run build && npm test",
25
25
  "test": "jest --coverage",
@@ -27,7 +27,7 @@
27
27
  "lint:fix": "eslint src/ bin/ --fix",
28
28
  "format": "prettier --write \"src/**/*.ts\" \"bin/**/*.ts\" \"tests/**/*.ts\"",
29
29
  "format:check": "prettier --check \"src/**/*.ts\" \"bin/**/*.ts\" \"tests/**/*.ts\"",
30
- "dev": "ts-node bin/haze.ts"
30
+ "dev": "ts-node bin/obscura_cli.ts"
31
31
  },
32
32
  "keywords": [
33
33
  "obfuscation",
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=haze.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"haze.d.ts","sourceRoot":"","sources":["../../bin/haze.ts"],"names":[],"mappings":""}
package/dist/bin/haze.js DELETED
@@ -1,56 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const commander_1 = require("commander");
7
- const index_1 = require("../src/index");
8
- const program = new commander_1.Command();
9
- program
10
- .name("obscura-js")
11
- .description("JavaScript code protection tool — obfuscation & anti-debugging")
12
- .version("0.1.0");
13
- program
14
- .command("protect <input>")
15
- .description("Protect a JavaScript file")
16
- .option("-o, --output <file>", "Output file (default: <input>.obscura.js)")
17
- .option("--no-seq", "Disable sequence expression pass")
18
- .option("--no-mba", "Disable mixed boolean arithmetic pass")
19
- .option("--no-ft", "Disable indirect function table pass")
20
- .option("--no-sp", "Disable encrypted string pool pass")
21
- .option("--no-cff", "Disable control flow flattening pass")
22
- .option("--no-dead", "Disable dead code injection pass")
23
- .option("--no-native", "Disable native method binding pass")
24
- .option("--no-tag", "Disable symbol integrity tag pass")
25
- .option("--sp-seed <number>", "Seed for the string pool XOR cipher", parseInt)
26
- .option("--minify", "Minify output (compact whitespace, shorten literals)")
27
- .option("--keep-comments", "Preserve original comments in output (default: strip all)")
28
- .action((input, opts) => {
29
- const inputPath = (0, path_1.resolve)(process.cwd(), input);
30
- const source = (0, fs_1.readFileSync)(inputPath, "utf-8");
31
- const options = {
32
- obfuscation: {
33
- sequenceExpression: opts["seq"] === false ? false : {},
34
- mba: opts["mba"] === false ? false : {},
35
- functionTable: opts["ft"] === false ? false : {},
36
- stringPool: opts["sp"] === false ? false : { seed: opts["spSeed"] },
37
- controlFlowFlattening: opts["cff"] === false ? false : {},
38
- deadCode: opts["dead"] === false ? false : {},
39
- },
40
- antiDebug: {
41
- nativeBinding: opts["native"] === false ? false : {},
42
- integrityTag: opts["tag"] === false ? false : {},
43
- },
44
- minify: opts["minify"] === true,
45
- stripComments: opts["keepComments"] !== true,
46
- };
47
- const { code, appliedPasses } = (0, index_1.protect)(source, options);
48
- const outputPath = opts["output"]
49
- ? (0, path_1.resolve)(process.cwd(), opts["output"])
50
- : inputPath.replace(/\.js$/, "") + ".obscura.js";
51
- (0, fs_1.writeFileSync)(outputPath, code, "utf-8");
52
- console.log(`✔ Protected: ${outputPath}`);
53
- console.log(` Passes applied: ${appliedPasses.join(", ")}`);
54
- });
55
- program.parse(process.argv);
56
- //# sourceMappingURL=haze.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"haze.js","sourceRoot":"","sources":["../../bin/haze.ts"],"names":[],"mappings":"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"}