【原創】vs2022配置切換多個ollvm環境

范哥范小飞發表於2024-12-03

不同的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
內容為


C:\llvm\ArkariLLVM
19.1.3
$(LLVMInstallDir)\bin;
$(LLVMInstallDir)\bin;$(VC_ExecutablePath_x86);$(CommonExecutablePath)
$(LLVMInstallDir)\lib\clang$(LLVMIncludeVersion)\include;


一個official1706.build.props
內容為


C:\llvm\official1706
17.0.6
$(LLVMInstallDir)\bin;$(VC_ExecutablePath_x86);$(CommonExecutablePath)


用的時候去載入屬性表就行了,只能載入我們準備的兩個屬性表中的一個。

有時候載入了,但是屬性設定還是會出問題,這裡確認一下llvm工具集是否載入正確了:

然後根據你載入不同版本的屬性表,就選擇不同的混淆引數。

不想混淆了,就刪除自己載入的那個屬性表,順便去引數裡給混淆引數刪掉。

相關文章