安装环境
- MacOS
- GIT
- CMAKE
- NDK - 21.1.6352462
步骤
1. 编译项目
此项目版本较低 https://github.com/obfuscator-llvm/obfuscator ,我们使用
https://github.com/heroims/obfuscator 进行编译
git clone https://github.com/heroims/obfuscator.gitcd obfuscator
git checkout llvm-9.0.1mkdir build
cd buildcmake -DCMAKE_BUILD_TYPE=Release -DLLVM_CREATE_XCODE_TOOLCHAIN=ON ../obfuscator/
make -j7
2. 编译完成,复制编译文件到NDK
将OLLVM的build/bin
下的文件
clang
clang-9
clang-format
clang++
复制到 ndk目录/toolchains/llvm/prebuilt/darwin-x86_64/bin
这里要注意,如果有相同名称文件而没选择替换文件,就会出现两个文件其中一个后面带了2 3,这时要把旧文件删掉,新文件改名
进入到 lib/clang/9.0.0/include/
将对应的头文件
stdarg.h
stddef.h
__stddef_max_align_t.h
float.h
复制到 ndk目录/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include
文件夹下。
配置CMakeLists.txt
#-mllvm -fla 控制流扁平化
#-mllvm -sub 指令替换
#-mllvm -bcf 虚假控制流程
#-mllvm -sobf 字符串加密
set(CMAKE_CXX_FLAGS "-mllvm -fla -mllvm -sub -mllvm -sobf ${CMAKE_CXX_FLAGS}")
这时就可以进行打包测试了,
其他问题
编译过程中我的报了错误
Library/Android/sdk/ndk/21.1.6352462/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/stdbool.h:28:15: fatal error: 'stdbool.h' file not found#include_next <stdbool.h>^~~~~~~~~~~1 error generated.
当我打开对应的文件夹,发现 stdbool.h
其实是存在的,为了解决只好打开 stdbool.h
文件注释掉 #include_next <stdbool.h>
,然后再编译就好了。