Skip to content

Add opaque predicates obfuscation pass #82

@3rdit

Description

@3rdit

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.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions