js-confuser-vm 0.0.3 → 0.0.5

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 (51) hide show
  1. package/CHANGELOG.md +125 -28
  2. package/LICENSE +21 -21
  3. package/README.MD +370 -196
  4. package/babel-plugin-inline-runtime.cjs +34 -34
  5. package/babel.config.json +23 -23
  6. package/dist/build-runtime.js +53 -0
  7. package/dist/compiler.js +107 -117
  8. package/dist/runtime.js +78 -84
  9. package/dist/transforms/bytecode/macroOpcodes.js +152 -0
  10. package/dist/transforms/{resolveContants.js → bytecode/resolveContants.js} +16 -6
  11. package/dist/transforms/bytecode/resolveLabels.js +80 -0
  12. package/dist/transforms/{selfModifying.js → bytecode/selfModifying.js} +33 -33
  13. package/dist/transforms/bytecode/specializedOpcodes.js +103 -0
  14. package/dist/transforms/runtime/macroOpcodes.js +88 -0
  15. package/dist/transforms/runtime/minify.js +1 -0
  16. package/dist/transforms/runtime/shuffleOpcodes.js +20 -0
  17. package/dist/transforms/runtime/specializedOpcodes.js +102 -0
  18. package/dist/transforms/utils/op-utils.js +25 -0
  19. package/dist/{random.js → transforms/utils/random-utils.js} +3 -3
  20. package/dist/types.js +4 -2
  21. package/index.ts +34 -22
  22. package/jest-strip-types.js +10 -10
  23. package/jest.config.js +35 -28
  24. package/package.json +49 -48
  25. package/src/build-runtime.ts +57 -0
  26. package/src/compiler.ts +2069 -2066
  27. package/src/index.ts +14 -14
  28. package/src/minify.ts +21 -21
  29. package/src/options.ts +14 -12
  30. package/src/runtime.ts +771 -779
  31. package/src/transforms/bytecode/macroOpcodes.ts +177 -0
  32. package/src/transforms/bytecode/resolveContants.ts +62 -0
  33. package/src/transforms/bytecode/resolveLabels.ts +107 -0
  34. package/src/transforms/{selfModifying.ts → bytecode/selfModifying.ts} +37 -40
  35. package/src/transforms/bytecode/specializedOpcodes.ts +118 -0
  36. package/src/transforms/runtime/macroOpcodes.ts +111 -0
  37. package/src/transforms/runtime/minify.ts +1 -0
  38. package/src/transforms/runtime/shuffleOpcodes.ts +24 -0
  39. package/src/transforms/runtime/specializedOpcodes.ts +146 -0
  40. package/src/transforms/utils/op-utils.ts +26 -0
  41. package/src/{random.ts → transforms/utils/random-utils.ts} +31 -31
  42. package/src/types.ts +33 -24
  43. package/src/utilts.ts +3 -3
  44. package/tsconfig.json +12 -12
  45. package/dist/runtimeObf.js +0 -56
  46. package/dist/transforms/controlFlowFlattening.js +0 -22
  47. package/dist/transforms/resolveLabels.js +0 -59
  48. package/src/runtimeObf.ts +0 -62
  49. package/src/transforms/controlFlowFlattening.ts +0 -30
  50. package/src/transforms/resolveContants.ts +0 -42
  51. package/src/transforms/resolveLabels.ts +0 -83
package/src/index.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { compileAndSerialize } from "./compiler.ts";
2
- import type { Options } from "./options.ts";
3
- import { DEFAULT_OPTIONS } from "./options.ts";
4
-
5
- async function obfuscate(source, options: Options = DEFAULT_OPTIONS) {
6
- const result = compileAndSerialize(source, options);
7
-
8
- return result;
9
- }
10
-
11
- export const JsConfuserVM = {
12
- obfuscate,
13
- };
14
- export default JsConfuserVM;
1
+ import { compileAndSerialize } from "./compiler.ts";
2
+ import type { Options } from "./options.ts";
3
+ import { DEFAULT_OPTIONS } from "./options.ts";
4
+
5
+ async function obfuscate(source, options: Options = DEFAULT_OPTIONS) {
6
+ const result = compileAndSerialize(source, options);
7
+
8
+ return result;
9
+ }
10
+
11
+ export const JsConfuserVM = {
12
+ obfuscate,
13
+ };
14
+ export default JsConfuserVM;
package/src/minify.ts CHANGED
@@ -1,21 +1,21 @@
1
- import ClosureCompiler from "google-closure-compiler";
2
-
3
- export function minify(sourceCode: string): Promise<string> {
4
- return new Promise((resolve, reject) => {
5
- const compiler = new ClosureCompiler({
6
- compilation_level: "ADVANCED",
7
- warning_level: "QUIET",
8
- });
9
-
10
- const compilerProcess = compiler.run((exitCode: number, stdOut: string, stdErr: string) => {
11
- if (exitCode !== 0) {
12
- reject(new Error(stdErr || `Closure Compiler exited with code ${exitCode}`));
13
- } else {
14
- resolve(stdOut);
15
- }
16
- });
17
-
18
- compilerProcess.stdin.write(sourceCode);
19
- compilerProcess.stdin.end();
20
- });
21
- }
1
+ import ClosureCompiler from "google-closure-compiler";
2
+
3
+ export function minify(sourceCode: string): Promise<string> {
4
+ return new Promise((resolve, reject) => {
5
+ const compiler = new ClosureCompiler({
6
+ compilation_level: "ADVANCED",
7
+ warning_level: "QUIET",
8
+ });
9
+
10
+ const compilerProcess = compiler.run((exitCode: number, stdOut: string, stdErr: string) => {
11
+ if (exitCode !== 0) {
12
+ reject(new Error(stdErr || `Closure Compiler exited with code ${exitCode}`));
13
+ } else {
14
+ resolve(stdOut);
15
+ }
16
+ });
17
+
18
+ compilerProcess.stdin.write(sourceCode);
19
+ compilerProcess.stdin.end();
20
+ });
21
+ }
package/src/options.ts CHANGED
@@ -1,12 +1,14 @@
1
- export interface Options {
2
- target?: "node" | "browser";
3
-
4
- randomizeOpcodes?: boolean; // randomize opcode values in OP mapping?
5
- shuffleOpcodes?: boolean; // shuffle order of opcode handlers in the runtime?
6
- encodeBytecode?: boolean; // encode bytecode? when off, comments for instructions are added
7
- selfModifying?: boolean; // do self-modifying bytecode for function bodies?
8
- timingChecks?: boolean; // add timing checks to detect debuggers?
9
- minify?: boolean; // pass final output through Google Closure Compiler? (Renames VM class properties)
10
- }
11
-
12
- export const DEFAULT_OPTIONS = {};
1
+ export interface Options {
2
+ target?: "node" | "browser";
3
+
4
+ randomizeOpcodes?: boolean; // randomize the opcode numbers?
5
+ shuffleOpcodes?: boolean; // shuffle order of opcode handlers in the runtime?
6
+ encodeBytecode?: boolean; // encode bytecode? when off, comments for instructions are added
7
+ selfModifying?: boolean; // do self-modifying bytecode for function bodies?
8
+ macroOpcodes?: boolean; // create combined opcodes for repeated instruction sequences?
9
+ specializedOpcodes?: boolean; // create specialized opcodes for commonly used opcode+operand pairs?
10
+ timingChecks?: boolean; // add timing checks to detect debuggers?
11
+ minify?: boolean; // pass final output through Google Closure Compiler? (Renames VM class properties)
12
+ }
13
+
14
+ export const DEFAULT_OPTIONS = {};