虚假控制流入门:Ubuntu20.04安装ollvm4.0踩坑记+用IDApython去除BCF
引言
虚假控制流(Bogus Control Flow,BCF),通过加入包含不透明谓词的条件跳转(也就是跳转与否在运行之前就已经确定的跳转,但IDA无法分析)和不可达的基本块,来干扰IDA的控制流分析和F5反汇编。
依赖
- IDA7.7
- 虚拟机Ubuntu20.04
Ubuntu20.04安装ollvm+各种踩坑记录
根据参考链接1,主要的命令就这些:
复制代码 隐藏代码
# 截至2022.09.25,这玩意已经5年没更新了……
git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git
# 这里build文件夹和obfuscator-llvm-4.0文件夹同级
mkdir build-llvm-4.0 && sudo chmod 777 -R build-llvm-4.0 && cd build-llvm-4.0
cmake -DCMAKE_BUILD_TYPE=Release ../obfuscator-llvm-4.0/
# 防止出现Permission Denied
sudo make -j5
但你先别急,这里水很深,不看完参考链接1以及我总结的踩坑记录的话,泥巴握不住!
1、gcc和g++需要降级
如果用的是9及以后的版本,make
时会没有任何提示,忽然报错make: *** [Makefile:152:all] 错误 2
。直接执行下面这些命令进行降级就行:
复制代码 隐藏代码
sudo apt install gcc-8 g++-8 -y
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
# 最后可以看看版本是否修改成功
gcc -v
g++ -v
采集失败,请手动处理
https://attach.52pojie.cn/forum/202209/25/205607ji6omiswdoixaiik.jpg
2、编译前要先修改源码
根据参考链接1,不修改源码会踩坑。找到<你的ollvm目录>/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
,按照下图把690行的readMem
的返回类型从Expected<vector<char>>
改为Expected<vector<uint8_t>>
(这里参考链接1错误地说成了uint_8
了)。
采集失败,请手动处理
https://attach.52pojie.cn/forum/202209/25/205607ji6omiswdoixaiik.jpg
3、注意权限问题
如果你在编译时,看到make
失败前有一大堆Permission Denied
,说明你权限没给够。
- 建议编译前给到
build-llvm-4.0
和obfuscator-llvm-4.0
的父文件夹777权限:sudo chmod 777 -R <父文件夹名>
,防止新生成的文件Permission Denied
。 - 不要在挂载点的文件夹进行编译,否则会有权限错误。
- 建议编译期间每次看到
build-llvm-4.0/bin
新生成一个文件,都给它777权限,防止Permission Denied
造成失败(其实编译失败也没事,编译好的文件不会重新编译,不是很耽误时间。每次看到新生成的文件出现Permission Denied
,先给它权限再重新编译即可)。
4、给足虚拟机内存
不给足内存的话虚拟机会死机。也可以选择降一降作业数,比如sudo make -j7
降到sudo make -j5
。
编译成功
大概等了一小时,终于成功了!纪念一下!
本站资源来自互联网收集,仅提供信息发布
一旦您浏览本站,即表示您已接受以下条约:
1.使用辅助可能会违反游戏协议,甚至违法,用户有权决定使用,并自行承担风险;
2.本站辅助严禁用于任何形式的商业用途,若被恶意贩卖,利益与本站无关;
3.本站为非营利性网站,但为了分担服务器等运营费用,收费均为赞助,没有任何利益收益。
死神科技 » 虚假控制流入门:Ubuntu20.04安装ollvm4.0踩坑记+用IDApython去除BCF
一旦您浏览本站,即表示您已接受以下条约:
1.使用辅助可能会违反游戏协议,甚至违法,用户有权决定使用,并自行承担风险;
2.本站辅助严禁用于任何形式的商业用途,若被恶意贩卖,利益与本站无关;
3.本站为非营利性网站,但为了分担服务器等运营费用,收费均为赞助,没有任何利益收益。
死神科技 » 虚假控制流入门:Ubuntu20.04安装ollvm4.0踩坑记+用IDApython去除BCF