不同的ollvm的混淆效果不一样,不同魔改版的命令参数也不一样,有的支持迭代多次混淆,有的不支持。
我想使用ollvm不同的版本,怎么办?
我不想替换vs安装的原装llvm,怎么办?
直接下载别人编译好的文件,不用自己编译了:
https://github.com/KomiMoe/Arkari/releases/tag/Win64-MT-19.1.3-obf1.6.0
这个版本的参数是
Akira:
混淆过程间相关
间接跳转,并加密跳转目标(-mllvm -irobf-indbr)
间接函数调用,并加密目标函数地址(-mllvm -irobf-icall)
间接全局变量引用,并加密变量地址(-mllvm -irobf-indgv)
字符串(c string)加密功能(-mllvm -irobf-cse)
过程相关控制流平坦混淆(-mllvm -irobf-cff)
整数常量加密(-mllvm -irobf-cie) (Win64-MT-19.1.3-obf1.6.0 or later)
浮点常量加密(-mllvm -irobf-cfe) (Win64-MT-19.1.3-obf1.6.0 or later)
全部 (-mllvm -irobf-indbr -mllvm -irobf-icall -mllvm -irobf-indgv -mllvm -irobf-cse -mllvm -irobf-cff -mllvm -irobf-cie -mllvm -irobf-cfe)
然后我们再下载一个官方替换版
https://github.com/DreamSoule/ollvm17/tree/main
下载官方的llvm,然后把DreamSoule的clang.exe替换原有文件
这个版本就支持迭代多次混淆
参数是
- bcf # 虚假控制流
- bcf_prob # 虚假控制流混淆概率 1~100, 默认70
- bcf_loop # 虚假控制流重复次数, 无限制, 默认2
- fla # 控制流平坦化
- sub # 指令替换(add/and/sub/or/xor)
- sobf # 字符串混淆(仅窄字符)
- split # 基本块分割
- split_num # 将原基本块分割数量, 无限制, 默认3
- ibr # 间接分支
- icall # 间接调用 (call 寄存器)
- igv # 间接全局变量
我把上述的两个文件夹放到了c盘的llvm目录下,然后我们准备两个文件(属性表)
ArkariLLVM.build.props
内容为
一个official1706.build.props
内容为
用的时候去加载属性表就行了,只能加载我们准备的两个属性表中的一个。
有时候加载了,但是属性设置还是会出问题,这里确认一下llvm工具集是否加载正确了:
然后根据你加载不同版本的属性表,就选择不同的混淆参数。
不想混淆了,就删除自己加载的那个属性表,顺便去参数里给混淆参数删掉。
标签:混淆,llvm,控制流,加载,vs2022,ollvm,irobf,mllvm,切换 From: https://www.cnblogs.com/coolfan/p/18583841