[LLVMdev] Obfuscation Transformations Clobbered by Unkown Optimizations

Matt Fredrikson mfredrik at cs.wisc.edu
Thu Dec 13 00:22:49 PST 2007


Hello all,

I am implementing some simple obfuscation transformations in LLVM. One
of the obfuscations involves searching for particular constants, and
"unrolling" them throughout a procedure using arithmetic. In effect,
certain constants are broken up into smaller constants and recombined
as needed using the appropriate operators. I perform this on
intermediate LLVM instructions.

After I run opt on an un-obfuscated bitcode file to produce an
obfuscated bitcode file, I verify that my transformations were placed
in the file using llvm-dis. At this point, the changes appear to have
been made. However, if I run the obfuscated bitcode file through llc
to produce x86 assembly, the obfuscations vanish. I manually disabled
all of the suspicious transformation passes run by llc, and nothing
changes. The same things happens if I run llvm-ld -native
-disable-opt.

Does anybody know what pass is clobbering my obfuscations?

Thanks,

Matt Fredrikson



More information about the llvm-dev mailing list