本文基于 ndk r25c (25.2.9519653)仅测试 Linux 和 macOS
点只因下载:332K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8q4)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6h3y4G2L8g2)9J5c8X3q4F1k6s2u0G2K9h3c8Q4x3V1k6J5k6i4m8G2M7$3W2@1L8%4u0&6i4K6u0r3j5h3&6V1M7X3!0A6k6q4)9J5k6r3&6V1K9#2)9J5k6s2t1J5y4h3y4Q4x3X3c8D9K9h3&6#2P5q4)9J5k6i4A6A6M7l9`.`.
坑:archlinux 需要 sudo archlinux-java set java-8-openjdk
sudo archlinux-java set java-8-openjdk
内容:
然后去Google的 prebuilt clang仓库找到 r450784d1 相关的分支并打开:
573K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8X3c8J5L8$3W2V1i4K6u0W2k6$3!0G2k6$3I4W2M7$3!0#2M7X3y4W2i4K6u0W2j5$3!0E0i4K6u0r3M7r3I4S2N6r3k6G2M7X3#2Q4x3V1k6H3M7X3g2T1N6h3W2D9N6s2y4Q4x3V1k6U0L8r3q4F1k6#2)9J5c8X3S2G2M7%4c8Q4x3V1k6D9K9h3&6#2P5q4)9J5k6s2R3^5y4W2)9J5c8W2)9J5b7X3I4G2k6#2)9J5c8Y4u0W2k6Y4y4Q4x3V1k6Z5k6h3q4V1M7#2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8X3y4D9j5h3&6Y4i4K6u0V1M7U0b7#2x3o6M7^5y4r3b7`.
点开最新的一个commit,进入
ba5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8X3c8J5L8$3W2V1i4K6u0W2k6$3!0G2k6$3I4W2M7$3!0#2M7X3y4W2i4K6u0W2j5$3!0E0i4K6u0r3M7r3I4S2N6r3k6G2M7X3#2Q4x3V1k6H3M7X3g2T1N6h3W2D9N6s2y4Q4x3V1k6U0L8r3q4F1k6#2)9J5c8X3S2G2M7%4c8Q4x3V1k6D9K9h3&6#2P5q4)9J5k6s2R3^5y4W2)9J5c8W2)9J5b7W2)9J5c8U0c8V1y4e0t1H3y4U0R3%4x3e0S2X3j5U0M7&6y4o6m8T1x3e0l9K6j5$3x3@1z5e0f1H3y4X3j5%4y4$3f1#2k6o6t1J5k6U0t1#2k6r3k6Q4x3V1k6U0L8r3q4F1k6#2)9J5k6s2t1@1y4e0l9%4z5o6c8V1x3g2)9J5c8R3`.`.
然后点击tgz下载这一份clang
然后基于这一份clang直接编译llvm动态库插件就可以直接用ndk加载了
解压
这个时候cmake ..会报错
cmake ..
这个时候去注释掉clang/lib64/cmake/llvm/LLVMExports.cmake 下面这一段代码
clang/lib64/cmake/llvm/LLVMExports.cmake
然后
测试代码来自 4bdK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1L8s2g2W2M7$3q4V1K9g2)9J5c8W2m8D9N6i4c8G2i4K6u0V1e0$3u0X3N6i4y4U0j5i4c8G2M7W2)9J5c8Y4c8J5k6h3g2Q4x3V1k6E0j5h3W2F1i4K6u0r3N6r3g2K6N6q4)9J5c8X3q4W2M7H3`.`.
build.sh:
编译后:
差不多鸟~
由于Google编译macOS工具链的系统版本太低,加载so的时候会报错
解决办法:
使用下载的clang替换掉ndk里面的clang
找不到头文件是macOS的问题,修改 build.sh 为
build.sh
后重新编译,成功混淆
1f9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2D9k6h3q4V1M7X3!0&6j5h3I4Q4x3X3g2U0L8W2)9J5c8Y4m8Q4x3V1j5I4x3o6l9^5i4K6u0r3
在我的博客中查看:129K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6^5N6s2g2D9P5g2)9J5k6h3y4F1i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3&6V1K9#2)9J5k6r3I4G2j5h3c8Q4x3X3c8D9L8s2k6E0i4K6u0V1M7r3q4K6M7#2)9J5k6s2m8D9N6h3N6A6L8R3`.`.
$ANDROID_HOME
/
tools
bin
sdkmanager
-
install
"ndk;25.2.9519653"
cat $ANDROID_HOME
ndk
25.2
.
9519653
toolchains
llvm
prebuilt
linux
x86_64
AndroidVersion.txt
14.0
7
based on r450784d1
for
additional information on LLVM revision
and
cherry
picks, see clang_source_info.md
mkdir clang
tar xzvf clang
r450784d1.tar.gz
C clang
git clone https:
github.com
LeadroyaL
pass
tutorial
set
(CMAKE_C_COMPILER
home
ylarod
r25c
clang
clang)
(CMAKE_CXX_COMPILER
(ENV{LLVM_HOME}
CMake Error at
lib64
cmake
LLVMExports.cmake:
1036
(message):
The imported target
"LLVMDemangle"
references the
file
"/home/ylarod/ndk-r25c/clang/lib64/libLLVMDemangle.a"
but this
does
not
exist. Possible reasons include:
*
The
was deleted, renamed,
or
moved to another location.
An install
uninstall procedure did
complete successfully.
The installation package was faulty
contained
"/home/ylarod/ndk-r25c/clang/lib64/cmake/llvm/LLVMExports.cmake"
but
all
the files it references.
Call Stack (most recent call first):
LLVMConfig.cmake:
251
(include)
CMakeLists.txt:
14
(find_package)
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!
mb_foyotena windows不支持, 其他系统简单