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种好玩的功能

  1. 控制流平坦化  -fla
  2. 指令替换    -sub
  3. 虚假控制流   -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命令运行。

posted @ 2023-02-13 16:14  Clovershrub  阅读(312)  评论(0编辑  收藏  举报