現(xiàn)狀
隨著時間時間推移,類似庫都基本不維護(hù)了,畢竟LLVM新版本改動多還好說,再多只要看看關(guān)鍵位置就大差不差知道怎么改怎么兼容,最難的就是編譯,每次編譯調(diào)試不知不覺沒干啥就能耗人一天,另外就是以前的人現(xiàn)在都不知道還在不在業(yè)內(nèi),回歸正題,其實(shí)修改的地方并不多,下面我就整理了一下關(guān)鍵位置,主要就是類型和調(diào)用順序變了一下,了解以后去修改類似的項(xiàng)目也是手到擒來。
關(guān)鍵修改
9.0以后的修改
這里類型寫法更加標(biāo)準(zhǔn)一步一步轉(zhuǎn)

image.png
這里是9以后不在調(diào)用這個方法了,導(dǎo)致fla不生效,也可以在
Flattening.cpp里面修改添加
image.png
10.0以后的修改
首先Obfuscation/CMakeLists.txt 里 add_llvm_library改add_llvm_component_library
這里是LoadInst初始化多加了個類型參數(shù),類似地方全改一遍

image.png

image.png
這里傳入類型修改一下

image.png
再然后
CryptoUtils.h里有一些宏定義是非常短的名稱代表方法,這里再全局里容易有歧義,可以批量移到CryptoUtils.cpp里,因?yàn)橹挥羞@個類再用,其他地方也沒有用這些短名稱的宏方法
image.png
其他地方和原來一樣不變。
11.0以后的修改
這里開始嚴(yán)格區(qū)分一元運(yùn)算符和二元運(yùn)算符了

image.png

image.png
XCode12 以后
首先編譯要多加幾個項(xiàng)目,根據(jù)自己需要可以多填幾個,LLVM-10以后llvm目錄向內(nèi)放了一層
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_CREATE_XCODE_TOOLCHAIN=ON -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" ../obfuscator/llvm
make -j7
sudo make install-xcode-toolchain
mv /usr/local/Toolchains /Library/Developer/
然后在Build Settings里找到C++ Language Dialect 和 C++ Standard Library使用默認(rèn)是為了直接走編譯鏈構(gòu)建的版本,如果你還加了其他的也需要注意一下別的確保都走你編譯的版本

build3.png
Android Studio4.x以后
NDK都改為了默認(rèn)CMake項(xiàng)目,直接復(fù)制Android/sdk/ndk/xx.x.xxxxxx文件夾修改一下名稱,替換bin和lib64
在build.gradle里添加個人修改的版本
android {
ndkVersion "major.minor.build" // e.g., ndkVersion "21.3.6528147"
}

WX20211228-021611@2x.png