【原创】vs2022配置切换多个ollvm环境
不同的ollvm的混淆效果不一样,不同魔改版的命令参数也不一样,有的支持迭代多次混淆,有的不支持。
我想使用ollvm不同的版本,怎么办?
我不想替换vs安装的原装llvm,怎么办?
本教程直接下载别人编译好的文件,不用自己编译了:
首先我准备一个空文件夹,路径不带中文。
我放在c盘的llvm目录下(c:\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)

Akira这个版本不支持迭代混淆。我把它解压到了c:\llvm\ArkariLLVM
然后我们再下载一个不同的ollvm,这个版本就支持迭代多次混淆:
https://github.com/DreamSoule/ollvm17/tree/main
先下载官方的1706版本llvm安装包,我安装到了c:\llvm\official1706
然后把从DreamSoule下载的clang.exe替换c:\llvm\official1706安装目录里的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 # 间接全局变量
然后我们准备两个文件(属性表)
一个文件名字:ArkariLLVM.build.props
内容为
<PropertyGroup>
<LLVMInstallDir>C:\llvm\ArkariLLVM</LLVMInstallDir>
<LLVMToolsVersion>19.1.3</LLVMToolsVersion>
<ExecutablePath>$(LLVMInstallDir)\bin;</ExecutablePath>
<ExecutablePath>$(LLVMInstallDir)\bin;$(VC_ExecutablePath_x86);$(CommonExecutablePath)</ExecutablePath>
<IncludePath>$(LLVMInstallDir)\lib\clang\$(LLVMIncludeVersion)\include;</IncludePath>
</PropertyGroup>
</Project>
另一个文件official1706.build.props
内容为
<PropertyGroup>
<LLVMInstallDir>C:\llvm\official1706</LLVMInstallDir>
<LLVMToolsVersion>17.0.6</LLVMToolsVersion>
<ExecutablePath>$(LLVMInstallDir)\bin;$(VC_ExecutablePath_x86);$(CommonExecutablePath)</ExecutablePath>
</PropertyGroup>
</Project>
属性表放任何一个位置都行,我还是放到了c:\llvm

用的时候去加载属性表就行了,但是同时只能加载我们准备的两个属性表中的一个。
属性表管理器界面在:
vs的“视图”--“其他窗口”--“属性表管理器”



有时候加载了,但是属性设置还是会出问题,这里确认一下llvm工具集是否加载正确了:

然后根据你加载不同版本的属性表,就选择不同的混淆参数。
不想混淆了,就删除自己加载的那个属性表,顺便去参数里给混淆参数删掉。

浙公网安备 33010602011771号