-
Notifications
You must be signed in to change notification settings - Fork 32
Description
A new pass to insert opaque predicates that are difficult for some static analysis tools to prove would make the obfuscator even better.
With flattening, having opaque predicates run before is probably a better idea (if both features are used): add fake branches to the original CFG, flattening converts everything to state machine, the fake states become real cases in the switch. Then the fake blocks would survive the transformations and appear normal in the final binary.
Making the junk blocks also reference real variables and also have many variants of opaque predicates would make it even better.
-irobf-opaque -> for enabling the feature
-opaque-prob=N -> for probability of inserting a predicate at each block (0-100)
Any feedback to give/discuss before implementation? I'd be down to start adding this feature when I get the time.