LLVM obfuscation pass. Works natively with clang and LLVM's opt
tool. Refer to test.sh
for information on using it with clang.
- Control flow flattening
- Replacing integer constants with complex expressions
- Replacing binary operations with complex expressions
- Most of the transformations used by Snapchat described here: "joint functions", scratch arguments, etc.