cyphina / llvmdiversitypasses

Beginnings of learning to use LLVM to diversify code mainly for the focus of obfuscating it to make reverse engineering more difficult.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

llvmdiversitypasses

Beginnings of learning to use LLVM to diversify code mainly for the focus of obfuscating it to make reverse engineering more difficult.

Progress possible thanks to these tutorials:

Commands: Get llvm bitcode from C/C++ program so we can run passes on it

clang -O3 -emit-llvm <program-name> -c -o <output-name>

Get native assembly from llvm bytecode

llc <bitcode-file-name> -o <output-name>

Run a pass as a shared object and output some time metrics (specify path-arg-name in InitializezPass macros)

opt -time-passes -load <path-to-pass-so-file> -<pass-arg-name> <pass-bitcode-name> -o <output-name>

Run the python scoring script

python score.py -l list.txt -csv

About

Beginnings of learning to use LLVM to diversify code mainly for the focus of obfuscating it to make reverse engineering more difficult.


Languages

Language:LLVM 30.4%Language:Makefile 21.5%Language:Assembly 14.4%Language:C++ 13.8%Language:CMake 8.3%Language:C 8.0%Language:Python 2.6%Language:Shell 0.8%