在本篇博客中,我将详细总结在 Android 12 系统上进行的几个实验,包括如何加载自定义 JAR 文件、如何解压和确认 .so
文件,以及如何验证系统报错提示。本文将介绍使用 PathClassLoader
和 DexClassLoader
动态加载类的实验,分析系统报错信息,并最终得出结论。
问题描述
发现某些应用的部分.so
文件实际上是APK文件,或者更确切地说,是包含了其他资源和Dex文件的ZIP文件,而不是标准的ELF共享库文件。这可能是因为在打包过程中,某宝 zzzsss 将一个包含特定资源和代码的APK或AAR文件故意命名为.so
文件。
以下是具体的问题和解决方法:
问题1:部分 .so
文件是 Zip archive data 而非 ELF shared object
通过命令 file /system/app/zzzsss/lib/arm/lib*
发现部分 .so
文件是 ZIP 压缩文件,而不是标准的 ELF 格式。这些文件实际上包含了其他资源和Dex文件。
问题2:应用在 Android 12 系统上无法加载这些文件
错误信息显示:
java.lang.ClassNotFoundException: BundleClassLoader