-
-
[原创]OLLVM混淆+VS 2019/22 Windows环境搭建
-
-
[原创]OLLVM混淆+VS 2019/22 Windows环境搭建
在很早之前就听过OLLVM混淆了,但是项目用户不多没拉闸过所以没有去弄
最近在做的注入项目DLL被AC特征了 正好趁着这个机会来搞一下OLLVM混淆看看能不能规避特征
笔者在网上找了很多相关资料 但是多数要不是安卓的 要不就是好几年之前的"牢文章"
为了帮助未来可能换设备的自己 决定正好记录下OLLVM混淆的搭建全流程
在正式开始记录之前 还是先来科普下OLLVM是什么
LLVM是一个编译器中负责代码生成的工具 比如VS 2019默认的同款工具是 Visual Studio 2019 (v142) ,VS 2022的生成工具默认是Visual Studio 2022 (v143)
而OLLVM呢 则是基于LLVM的开源代码混淆工具 带有源码级混淆功能
所谓源码级混淆可以通俗易懂的理解为:
写好的源文件 -> OLLVM混淆 加一堆没用的变量声明,控制语句等
(例如:
int a = 100;
if( a != 100)
return;
)
-> 编译为
而正常项目编译逻辑则是:写好的源文件 -> 编译
可以清晰看到使用OLLVM混淆后,生成的代码多了很多没用的跳转(即控制流平坦化&虚假控制流),以及生成的代码字节复杂化,源码中一行一个a += 100; 可能变成 a += 2 * 4 + 552 / 6;(即指令替换),还有将用到的字符串加密 。。
官方的解释为:通过指令替换、控制流平坦化和虚假控制流等手段显著增加二进制逆向难度
而对于我们来说,可以通过每次混淆程度不同,来规避AC的程序特征
如上所述,OLLVM是基于LLVM的工具,所以需要先在IDE中安装LLVM
笔者这里使用的IDE是Visual Studio 2019, 已经将LLVM集成进组件了,VS 2019 2022版本也可以直接使用笔者的办法来安装LLVM,其他版本可以自行尝试


冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。