windows64位平台下编译ollvm6.0(集成了字符串混淆功能)生成的lib和bin文件,放在android-ndk-r18b-windows-x86_64\android-ndk-r18b\toolchains\llvm\prebuilt\windows-x86_64目录下面即可使用。(因为lib和bin文件压缩后有400多M,上传资源的大小有限制,所以分两次上传, windows_ollvm6.0_ndk_r18b.7z.001和windows_ollvm6.0_ndk_r18b.7z.002都下载之后,放在同级目录下面解压)。
操作步骤:
第一步:先备份 android-ndk-r18b-windows-x86_64\android-ndk-r18b\toolchains\llvm
第二步:删掉android-ndk-r18b-windows-x86_64\android-ndk-r18b\toolchains\llvm\prebuilt\windows-x86_64目录下所有的文件
第三步:将解压后的lib文件夹和bin文件夹复制到android-ndk-r18b-windows-x86_64\android-ndk-r18b\toolchains\llvm\prebuilt\windows-x86_64文件夹下面
Android.mk文件中配置混淆
LOCAL_CFLAGS += -mllvm -sub -mllvm -fla -mllvm -bcf
#字符串混淆
LOCAL_CFLAGS += -mllvm -sobf
ndk下载地址可参考https://developer.android.google.cn/ndk/downloads/
或者
https://dl.google.com/android/repository/android-ndk-r18b-windows-x86_64.zip
ollvm6.0经过测试,最高支持ndk-r18b,
在ndk-r19b上编译jni会报这样的错误:clang++.exe: error: unknown argument: '-fno-addrsig'
windows_ollvm6.0_ndk_r18b.7z.001 下载链接 https://download.csdn.net/download/u012442804/11194759
windows_ollvm6.0_ndk_r18b.7z.002 下载链接 https://download.csdn.net/download/u012442804/11194795
ollvm6.0编译参考资料
https://github.com/yazhiwang/ollvm-tll
编译 ollvm-tll 之后,集成到ndkr18b之后,生成的so文件,用IDA Pro7.0打开,发现有部分字符串没有混淆,做了一点调整。
调整了如下两个文件
include/llvm/Transforms/Obfuscation/StringObfuscation.h
lib/Transforms/Obfuscation/StringObfuscation.cpp
参考资料
https://zhuanlan.zhihu.com/p/39322683