目录
- 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