本文只是对【清羽】Windows10 下编译 OLLVM-14.x 的用法做记录,不涉及任何原理分析.
配置环境
1.ndk
原文里大佬用的是 ndk25.
https://dl.google.com/android/repository/android-ndk-r25-beta3-windows.zip
2.llvm-mingw64
https://github.com/mstorsjo/llvm-mingw/releases/download/20220323/llvm-mingw-20220323-ucrt-x86_64.zip
解压后把
1 | ...(你解压的文件夹)\llvm-mingw-20220323-ucrt-x86_64\bin |
配到环境变量里, 否则会提示找不到 libc++.dll 等.
3.clang
下载大佬已经编译好的 clang
https://gitee.com/qingyu_yyy/ollvm-project/attach_files/985049/download/clang-14.0.0.zip
解压后把 clang.exe 这个复制 3 份,分别命名为 clang.exe,clang++.exe,clang-cl.exe.
粘贴到
1 | ...\android-ndk-r25-beta3\toolchains\llvm\prebuilt\windows-x86_64\bin\ |
里
4. 复制 lib 库
把
1 | ...\android-ndk-r25-beta3\toolchains\llvm\prebuilt\windows-x86_64\lib64\clang |
复制到
1 | ...\android-ndk-r25-beta3\toolchains\llvm\prebuilt\windows-x86_64\lib\ |
里.
然后把该文件夹的 14.0.1 改成 14.0.0
编译使用
1.Android.mk
加上
1 | LOCAL_CFLAGS += -mllvm -sub -mllvm -bcf -mllvm -fla |
2.CMakeLists.txt
1 | set(CMAKE_CXX_FLAGS "-mllvm -fla -mllvm -sub -mllvm -sobf") |
在 Android studio 指定 ndk 路径 local.properties.
1 | ndk.dir=C\:\\Users\\Shocker\\AppData\\Local\\Android\\Sdk\\ndk\\android-ndk-r25-beta3 |
貌似在 Android studio 加上 - mllvm -bcf 编译卡死.
可以在外面 ndk-build 后拖进项目里.
单独混淆某函数
函数名后加上
1 | __attribute__ ((__annotate__ (("sub")))) |
例如:
1 | void printText(int number) __attribute__ ((__annotate__ (("sub")))) __attribute__ ((__annotate__ (("bcf")))){} |
注:
目前 gitee 已经无法访问,我已将原作者的 clang 上传至百度网盘
链接:https://pan.baidu.com/s/1861eK-qwKoZ6pT9IlHRswg
提取码:g6hm