目錄
- 1. windows 編譯
- 1. 2 編譯工具安裝
- 1.2.1 下載w64devkit
- 1.2.2 添加環境變量
- 1.2.3 驗證一下
- 1.3 下載llvm-18.1.8rel
- 1.4 編譯
- 2. Android studio增加混淆編譯
- 2.1 替換NDK中clang
- 2.2 配置混淆編譯項
- 3. Linux編譯安裝
- 4. Linux下增加混淆編譯
- 4.1 在CMakeLists.txt中設置clang編譯器
- 4.2 CMakeLists.txt中設置混淆編譯選項
1. windows 編譯
1. 2 編譯工具安裝
1.2.1 下載w64devkit
w64devkit
1.2.2 添加環境變量
1.2.3 驗證一下
1.3 下載llvm-18.1.8rel
百度網盤地址:
鏈接: https://pan.baidu.com/s/1hbXmOxqc1Vln-CWLXT5Ulw?pwd=ur9m 提取碼: ur9m
1.4 編譯
cmake -S llvm -B build -G "MinGW Makefiles" -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_NEW_PASS_MANAGER=OFF
cd build
mingw32-make.exe -j8
2. Android studio增加混淆編譯
2.1 替換NDK中clang
將Hikari-LLVM15-llvm-18.1.8rel\build\bin下的clang.exe、clang++.exe、clang-cl.exe
替換到ndk\27.1.12297006\toolchains\llvm\prebuilt\windows-x86_64\bin目錄
注意:Hikari-LLVM15對應ndk27
2.2 配置混淆編譯項
android {ndkVersion = "27.1.12297006"
}
CMakeLists.txt增加編譯選項
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mllvm -enable-funcwra -mllvm -enable-fco -mllvm -enable-splitobf -mllvm -enable-strcry -mllvm -enable-bcfobf -mllvm -enable-cffobf -mllvm -enable-subobf -mllvm -enable-acdobf")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mllvm -enable-funcwra -mllvm -enable-fco -mllvm -enable-splitobf -mllvm -enable-strcry -mllvm -enable-bcfobf -mllvm -enable-cffobf -mllvm -enable-subobf -mllvm -enable-acdobf")
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
注意:當配置選項-mllvm -enable-allobf時報錯,原因未知
更多編譯選項參考:
https://github.com/HikariObfuscator/Hikari/wiki/Usage
3. Linux編譯安裝
unzip Hikari-LLVM15-llvm-18.1.8rel.zip
cd Hikari-LLVM15-llvm-18.1.8relrm -rf build/*
cmake -S llvm -B build -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_NEW_PASS_MANAGER=OFFcd build
make -j8
make install
4. Linux下增加混淆編譯
4.1 在CMakeLists.txt中設置clang編譯器
set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "clang++")
4.2 CMakeLists.txt中設置混淆編譯選項
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mllvm -enable-funcwra -mllvm -enable-fco -mllvm -enable-splitobf -mllvm -enable-strcry -mllvm -enable-bcfobf -mllvm -enable-cffobf -mllvm -enable-subobf -mllvm -enable-acdobf")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mllvm -enable-funcwra -mllvm -enable-fco -mllvm -enable-splitobf -mllvm -enable-strcry -mllvm -enable-bcfobf -mllvm -enable-cffobf -mllvm -enable-subobf -mllvm -enable-acdobf")
set(CMAKE_C_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
參考:
https://blog.csdn.net/weixin_45582916/article/details/141965485
https://www.cnblogs.com/maiiiii/p/17553519.html