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
* feature: randomize anti-tamper feedback constant per run (#69)
Phase 2 of #69 (Level 2 identity). The anti-tamper method-body cipher used a
hardcoded feedback constant 0x3dbb2819 in both the obfuscator (encrypt) and the
injected runtime (decrypt) — a value de4dot signature-matches to identify
ConfuserEx.
Normal and Anti modes now generate a random per-run feedback value, use it in the
encryption loop, and inject it into the runtime via a new Mutation key (KeyI5),
exactly like the existing z/x/c/v hash constants (KeyI1-4). Obfuscator and runtime
stay in sync automatically because the same generated value is both used and
injected.
JIT mode is intentionally left unchanged — its runtime component is already broken
and its test is skipped, so a crypto change there cannot be validated.
Validated by AntiTamper.Test: the obfuscated app decrypts its own method bodies at
runtime and produces correct output (exit 42) for both Normal and Anti modes.
* feature: randomize CFG state multiplier constant per run (#69)
The Constants protection's control-flow encoding baked the fixed
multiplier 0x21412321 into both the obfuscator-side CFGState and the
injected runtime CFGCtx constructor, giving de4dot a stable signature.
Generate a random odd (invertible mod 2^32) multiplier per module when
the CFG state type is injected, rewrite the literal in the runtime ctor
IL, and thread the same value through the obfuscator CFGState so both
sides stay in sync. Validated end-to-end by the constants protection
tests (obfuscate -> run -> assert output).
---------
Co-authored-by: RandomCrocodile <mawi@polosab.com>
0 commit comments