You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Injects fake bytecode sequences that are never executed. These look like real instructions but are skipped during runtime, confusing analysis tools that process them.
2048
2048
2049
-
### `vmCompactDispatcher`
2049
+
### `vmMacroOps`
2050
2050
Type: `boolean` Default: `false`
2051
2051
2052
-
Uses a single unified dispatcher (generator-based) for both sync and async/generator code execution. By default (`false`), the VM generates two separate dispatchers: a non-generator version for sync code (faster) and a generator version for async/generator code. When enabled, only the generator-based dispatcher is used for all execution.
2052
+
Combines common instruction sequences into single "macro" opcodes. For example, `LOAD + ADD + STORE` might become a single `MACRO_ADD_TO_VAR` instruction. This breaks pattern recognition and can improve performance.
2053
2053
2054
-
**Trade-offs:**
2055
-
-`false` (default): Larger code size due to dual dispatchers, but faster sync execution (no generator overhead)
2056
-
-`true`: Smaller code size with single dispatcher, but sync code has generator protocol overhead
2054
+
### `vmDebugProtection`
2055
+
Type: `boolean` Default: `false`
2057
2056
2058
-
Use this when code size is more important than sync execution speed.
2057
+
Adds multi-layered anti-debugging, anti-analysis, and anti-LLM defenses to the VM runtime. For best results, allow `unsafe-eval` in your Content Security Policy. Works best with `browser`/`browser-no-eval` targets.
2059
2058
2060
-
### `vmMacroOps`
2059
+
### `vmSelfDefending`
2061
2060
Type: `boolean` Default: `false`
2062
2061
2063
-
Combines common instruction sequences into single "macro" opcodes. For example, `LOAD + ADD + STORE` might become a single `MACRO_ADD_TO_VAR` instruction. This breaks pattern recognition and can improve performance.
2062
+
Adds multi-layered tamper detection, anti-hooking, and anti-reverse-engineering protection to the VM runtime.
2064
2063
2065
-
### `vmDebugProtection`
2066
-
Type: `boolean` Default: `false`
2064
+
> :warning: This option force-enables [`vmBytecodeArrayEncoding`](#vmbytecodeArrayEncoding).
2067
2065
2068
-
Adds anti-debugging measures to the VM runtime. Detects debugger presence and alters behavior when debugging is detected.
2066
+
Strongly recommended to use together with [`vmDebugProtection`](#vmDebugProtection), [`vmBytecodeArrayEncodingKey`](#vmbytecodeArrayEncodingKey), and [`vmBytecodeArrayEncodingKeyGetter`](#vmbytecodeArrayEncodingKeyGetter).
2069
2067
2070
2068
### `vmStatefulOpcodes`
2071
2069
Type: `boolean` Default: `false`
@@ -2079,6 +2077,26 @@ Encrypts values on the VM stack during execution. Values are encoded when pushed
2079
2077
2080
2078
This option heavily affects performance.
2081
2079
2080
+
### `vmCompactDispatcher`
2081
+
Type: `boolean` Default: `false`
2082
+
2083
+
Uses a single VM executor instead of dual executors (sync + generator). Reduces obfuscated code size but adds ~20% performance overhead on recursion-heavy code.
-`true`: single executor — smaller output, slightly slower
2087
+
2088
+
### `vmStringArrayBytecodeOnly`
2089
+
Type: `boolean` Default: `false`
2090
+
2091
+
When enabled, the string array will **only** extract strings from bytecode data — no other strings in the code are transformed. This force-enables `stringArray` even if it's not explicitly set.
2092
+
2093
+
**Why use this:** Extracting all VM runtime strings to a string array is slow. This option targets only bytecode content for string array extraction, improving performance while still protecting bytecode constants.
2094
+
2095
+
- When `vmBytecodeArrayEncoding: false` — strings inside bytecode constant pools (`c` arrays) are extracted
2096
+
- When `vmBytecodeArrayEncoding: true` — top-level base64 encoded bytecode strings are extracted
2097
+
-`stringArrayThreshold` still controls what percentage of those bytecode strings are extracted
0 commit comments