【原创】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的“视图”--“其他窗口”--“属性表管理器”
image

image


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

然后根据你加载不同版本的属性表,就选择不同的混淆参数。

不想混淆了,就删除自己加载的那个属性表,顺便去参数里给混淆参数删掉。

posted @ 2024-12-03 12:32  范哥范小飞  阅读(598)  评论(0)    收藏  举报