ollvm的使用

https://github.com/obfuscator-llvm/obfuscator.git

https://github.com/obfuscator-llvm/obfuscator/tree/llvm-4.0

一、下载源码:


"-b llvm-4.0",下载llvm-4.0 branch,目前是最新的

二、Build

(1)mkdir build

(2)cd build/

(3)cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator/

(4)make -j7

编译完成后,编译好的二进制程序都存放在build/bin目录下



三、混淆

使用Obfuscator-LLVM最简单的方法是将标志(第一部分提到的PASS)传递给Clang的LLVM后端。 当前可用的标志是:

1.     -fla 控制流扁平化的PASS参数

2.     -sub指令替换的PASS参数

3.     -bcf虚假控制流的PASS参数

"-mllvm -fla -mllvm -sub -mllvm -bcf"

比如如下的函数:

正常编译出来的结果:

-mllvm -fla

跟上面差别不大

-mllvm -sub


"-mllvm -sub"跟"-mllvm -fla"的加固效果是一样,所以在实际项目中还需要改进

-mllvm -bcf


bcf的效果比较明显

注意:

1. 参数的使用位置比较重要,-o必须放在最后

 /ollvm-4.0/build/bin/clang test.c -mllvm -bcf -o test

如果把pass放在最后,是不会有混淆效果,比如

/ollvm-4.0/build/bin/clang test.c -o test -mllvm -bcf


参考:

1. OLLVM调研

2. OLLVM在iOS中的实践

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值