OLLVM代码混淆
OLLVM代码混淆
理论上这个时候看这个有点早,但是它的功能好nm强大啊!!!
原理嘛…理论部分看懂了,代码实现部分反正是没怎么看懂,但我只想玩它的功能~
诶嘿 ( ≧ ∇ ≦ ) /
Linux
杀千刀的安装过程
为什么这么说呢?因为我为了搞这个东西重装了2遍kali、3遍ubuntu,现在回过来看,我简直就是个**
我的kali已经没有办法安装gcc-8和g+±8了,所以使用docker
下载ollvm-4.0源码
git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git
下载docker
sudo apt install docker.io
加载大佬准备好的docker
sudo docker pull nickdiego/ollvm-build
下载脚本
git clone https://github.com/nickdiego/docker-ollvm
切换到docker-ollvm文件夹内
打开ollvm-build.sh文件,在149与150行之间加入
DOCKER_CMD+=" -DLLVM_INCLUDE_TESTS=OFF"
运行脚本
sudo ./ollvm-build.sh the_path_to/obfuscator
运行过程中可能会时不时报一些小错误,无视他们
使用方法
OLLVM-4.0主要有3种好玩的功能
- 控制流平坦化 -fla
- 指令替换 -sub
- 虚假控制流 -bcf
假设要以fla模式编译文件test.c
以root身份打开终端或者每句前面都加sudo
mv the_path_to/test.c the_path_to/obfuscator/build_release/bin
cd the_path_to/obfuscator/build_release/bin
./clang -mllvm -fla test.c
Windows
tnnd,四天啊!四天!你知道这四天我是怎么过来的吗?网上的教程一个编译成功的都没有啊!
md我就从来没见过能报这么多错的东西!网上的教程都在解决编译到90%停了怎么办,但是我tm编译到8%就停了啊!8%啊!!!
简历上可以多写一行:
熟悉clang、cmake、mingw、ninja、Visual Studio、ollvm的下载与卸载
反OLLVM
看https://bbs.kanxue.com/thread-272414.htm吧
麻了,代码实现部分就没几行看得懂的。。。
抄几个脚本
脚本在此
debcf是IDApython脚本,st为起始地址,end为中止地址,if那一行写混淆的变量名。
defla是python脚本,使用python3 defla.py file_name start_addr命令运行。