An obfuscator produces shit-like code.
Obfuscation passes are implemented with new pass manager in llvm/lib/Transforms/Obfuscation for learning purpose.
-mllvm -stringobfC String obfuscation-mllvm -stringobfObjective-C String obfuscation-mllvm -instrobfInstruction substitution-mllvm -bcfBogus control flow-mllvm -flattenFlatten control flow-mllvm -indircallSimple indirect function call-mllvm -indirbrIndirect branching
- Better instruction substitution
- Better Flatten control flow
- Better bogus control flow