安裝環境
- 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>
,然后再編譯就好了。