应用安全 --- apk应知应会 之 so加载流程
一个app的so文件有三种,一种是系统库,一种是应用本地库,还有一种是运行时加载库常见加密库。且so是按需加载的,先加载核心系统库,在加载应用启动后调用的so,最后加载动态运行库
下面我将为您详细解析这三种类型的 SO 文件。
核心分类对比表
特性 | 系统库 (System Libraries) | 应用本地库 (Local Libraries) | 运行时加载库 (Runtime-loaded Libraries) |
---|---|---|---|
来源 | Android 操作系统、芯片厂商(如高通)、设备制造商 | 随 APK 一起打包发布 | 从网络下载,或从 APK 的 assets /res 目录解密后释放 |
存放路径 | /system/lib(64)/ , /vendor/lib(64)/ , /apex/ |
/data/app/.../lib/arm64/ (APK 安装时解压) |
/data/data/<package>/files/ , /data/data/<package>/cache/ |
加载方式 | System.loadLibrary() (由系统或其他库隐式加载) |
System.loadLibrary() |
System.load(String absolutePath) |
主要作用 | 提供系统核心服务、硬件抽象层(HAL)、基础运行时 | 实现应用核心功能、性能敏感模块、JNI 接口 | 插件化功能、热更新、安全加固(加密算法核心) |
可见性 | 对所有应用可见 | 容易被静态提取和分析 | 隐藏于 APK 之外,需动态捕获 |
加密情况 | 不加密 | 通常不加密(或使用厂商基础加固) | 几乎总是被加密或混淆 |
调试与分析 | 容易,有公开符号 | 较容易,可静态分析 | 困难,需要动态脱壳、内存 dump |
详细解析
1. 系统库 (System Libraries)
这些是构成 Android 系统基础的共享库,由手机厂商提供。
-
例子:
-
libc.so
(Bionic C 库) -
liblog.so
(Android 日志系统) -
libandroid_runtime.so
(Android 运行时环境) -
libgui.so
,libui.so
(图形系统) -
libOpenSLES.so
(音频 API) -
/vendor/lib64/libxxx.so
(厂商特有的硬件抽象层库,如高通、三星的图形、传感器驱动)
-
-
特点:
-
路径固定:位于
/system
,/vendor
,/apex
等分区。 -
隐式加载:当你的应用或应用加载的本地库依赖它们时,系统链接器会自动加载它们。你不需要(也不应该)在自己的代码中显式加载它们。
-
公开API:它们通过 NDK 提供头文件,开发者可以合法地链接和使用它们的功能。
-
2. 应用本地库 (Local Libraries)
这些是开发者编写并编译后,随 APK 一起发布的库。它们实现了应用的核心功能。
-
例子:
-
自己实现的 JNI 方法库:
libnative-lib.so
-
集成的第三方 SDK:
libweibosdkcore.so
(微博 SDK)、libAMapSDK.so
(高德地图) -
性能敏感的引擎:游戏引擎 (
libunity.so
,libil2cpp.so
)、音视频编码库 (libffmpeg.so
)、机器学习推理框架 (libtensorflowlite.so
)
-
-
特点:
-
存放于 APK:位于 APK 压缩包的
lib/arm64-v8a/
等目录下。 -
安装时解压:在安装时,系统会将其解压到应用私有目录
/data/app/.../lib/arm64/
。 -
显式加载:开发者需要在 Java 代码中调用
System.loadLibrary("native-lib")
来加载(注意省略lib
前缀和.so
后缀)。 -
分析目标:这是静态逆向分析的主要目标,使用 IDA Pro、Ghidra 等工具可以直接分析磁盘上的这个文件。
-
3. 运行时加载库 (Runtime-loaded Libraries / “加密库”)
这是安全加固和对抗逆向的核心手段。这些库不直接存在于 APK 的 lib
目录下,而是被隐藏或加密。
-
目的:
-
对抗静态分析:防止分析者直接使用工具打开分析核心算法。
-
防止篡改:加固后的 APK 难以被直接修改和重打包。
-
业务灵活性:实现插件化、热更新,动态添加新功能。
-
-
实现流程:
-
隐藏/加密:将核心 SO 文件加密后放在 APK 的
assets
或res/raw
目录,或者在应用第一次启动时从服务器下载。 -
释放:在运行时(通常在 Application 的
onCreate
或启动页中),将加密的文件解密,并写入到应用的数据目录,如/data/data/<package>/files/
或/data/data/<package>/cache/
。这个目录通常命名为libs
,plugin
,xxx_x86
(用于迷惑)等。 -
加载:使用
System.load("/data/data/.../files/libencrypted.so")
(传入绝对路径)来加载这个刚刚解密出来的文件。
-
-
特点:
-
核心逻辑:真正的业务逻辑、加密算法、协议通信等核心代码都在这里。
-
对抗手段:分析者无法通过解压 APK 直接获得它,必须采用动态分析技术:
-
Frida / Xposed Hook:Hook
System.load
等函数,捕获解密后的文件路径,在它被加载前从磁盘上取走。 -
内存 Dump:在 SO 被加载到内存后,使用 GDB、Frida 脚本或
/proc/<pid>/maps
和dd
命令将内存中的整个 SO 镜像 dump 下来,再进行修复和分析。 -
模拟执行:使用 Unidbg 这类工具模拟执行 SO 代码,避免逆向算法本身。
-
-
总结与关联
一个加固后的应用,其 SO 结构通常是这样的:
-
外壳 (Stub):APK 自带的应用本地库(如
libshell.so
)。它本身可能被混淆,但主要职责是解密和加载真正的核心库。它几乎没有业务逻辑。 -
核心 (Core):被加密存放的运行时加载库(如
libcore.so
)。它包含了所有需要保护的核心算法和逻辑。外壳会解密并加载它。 -
依赖 (Dependencies):在整个过程中,系统库会被自动加载,为前两者提供运行环境。
因此,在分析一个加固过的 App 时,逆向工程师的首要目标就是突破外壳的保护,获取到内存中解密后的核心 SO 文件,而这正是双方攻防的焦点。
[*] 共找到 323 个SO模块 [*] 开始枚举当前进程加载的SO模块... 模块名称 内存起始地址 大小 路径 ---------------------------------------------------------------------------------------------------- libandroid_runtime.so 745528e000 1757184 bytes /system/lib64/libandroid_runtime.so libbase.so 7451442000 249856 bytes /system/lib64/libbase.so libbinder.so 74531c6000 667648 bytes /system/lib64/libbinder.so libcutils.so 7452f5d000 73728 bytes /system/lib64/libcutils.so libhidlbase.so 7452441000 679936 bytes /system/lib64/libhidlbase.so liblog.so 7451a50000 73728 bytes /system/lib64/liblog.so libnativeloader.so 7452c09000 221184 bytes /apex/com.android.art/lib64/libnativeloader.so libutils.so 7452148000 122880 bytes /system/lib64/libutils.so libwilhelm.so 7451540000 262144 bytes /system/lib64/libwilhelm.so libc++.so 7453a0b000 716800 bytes /system/lib64/libc++.so libc.so 7450701000 3223552 bytes /apex/com.android.runtime/lib64/bionic/libc.so libm.so 744fec7000 225280 bytes /apex/com.android.runtime/lib64/bionic/libm.so libdl.so 74538a4000 20480 bytes /apex/com.android.runtime/lib64/bionic/libdl.so libmillet_comm.so 7455211000 16384 bytes /system/lib64/libmillet_comm.so libharfbuzz_ng.so 7450086000 729088 bytes /system/lib64/libharfbuzz_ng.so libhwui.so 7453d73000 7909376 bytes /system/lib64/libhwui.so libminikin.so 74533ca000 167936 bytes /system/lib64/libminikin.so libnativehelper.so 7450172000 32768 bytes /apex/com.android.art/lib64/libnativehelper.so libz.so 7453524000 94208 bytes /system/lib64/libz.so libziparchive.so 745361e000 65536 bytes /system/lib64/libziparchive.so libandroidicu.so 7452106000 212992 bytes /apex/com.android.art/lib64/libandroidicu.so libbpf_android.so 7451a2c000 53248 bytes /system/lib64/libbpf_android.so libnetdbpf.so 7453457000 159744 bytes /system/lib64/libnetdbpf.so libnetdutils.so 7452eeb000 81920 bytes /system/lib64/libnetdutils.so libmemtrack.so 7455022000 16384 bytes /system/lib64/libmemtrack.so libandroidfw.so 7450d86000 458752 bytes /system/lib64/libandroidfw.so libappfuse.so 7453559000 57344 bytes /system/lib64/libappfuse.so libcrypto.so 7451e94000 1126400 bytes /system/lib64/libcrypto.so libdebuggerd_client.so 7450f4e000 40960 bytes /system/lib64/libdebuggerd_client.so libui.so 7452c48000 290816 bytes /system/lib64/libui.so libgraphicsenv.so 7451714000 57344 bytes /system/lib64/libgraphicsenv.so libgui.so 7452540000 1048576 bytes /system/lib64/libgui.so libmediandk.so 7451d4d000 204800 bytes /system/lib64/libmediandk.so libsensor.so 7451244000 98304 bytes /system/lib64/libsensor.so libinput.so 7454701000 229376 bytes /system/lib64/libinput.so libcamera_client.so 7451484000 491520 bytes /system/lib64/libcamera_client.so libcamera_metadata.so 745235f000 53248 bytes /system/lib64/libcamera_metadata.so libsqlite.so 7453048000 1208320 bytes /system/lib64/libsqlite.so libEGL.so 7450184000 229376 bytes /system/lib64/libEGL.so libGLESv1_CM.so 7450b6a000 36864 bytes /system/lib64/libGLESv1_CM.so libGLESv2.so 7451a9e000 106496 bytes /system/lib64/libGLESv2.so libGLESv3.so 7453689000 106496 bytes /system/lib64/libGLESv3.so libincfs.so 7450597000 135168 bytes /system/lib64/libincfs.so libdataloader.so 74521e3000 65536 bytes /system/lib64/libdataloader.so libvulkan.so 7452189000 167936 bytes /system/lib64/libvulkan.so libETC1.so 74539e0000 16384 bytes /system/lib64/libETC1.so libhardware.so 745330d000 12288 bytes /system/lib64/libhardware.so libhardware_legacy.so 745390f000 28672 bytes /system/lib64/libhardware_legacy.so libselinux.so 7452514000 110592 bytes /system/lib64/libselinux.so libmedia.so 74510c3000 630784 bytes /system/lib64/libmedia.so libmedia_helper.so 7453659000 98304 bytes /system/lib64/libmedia_helper.so libmediametrics.so 7452751000 86016 bytes /system/lib64/libmediametrics.so libmeminfo.so 7452883000 53248 bytes /system/lib64/libmeminfo.so libaudioclient.so 7452208000 847872 bytes /system/lib64/libaudioclient.so libaudiofoundation.so 745209b000 94208 bytes /system/lib64/libaudiofoundation.so libaudiopolicy.so 74518b1000 24576 bytes /system/lib64/libaudiopolicy.so libusbhost.so 74501c7000 20480 bytes /system/lib64/libusbhost.so libpdfium.so 7454899000 4984832 bytes /system/lib64/libpdfium.so libimg_utils.so 745508f000 122880 bytes /system/lib64/libimg_utils.so libnetd_client.so 74527b5000 36864 bytes /system/lib64/libnetd_client.so libprocessgroup.so 7454580000 262144 bytes /system/lib64/libprocessgroup.so libnativebridge_lazy.so 7451d15000 20480 bytes /system/lib64/libnativebridge_lazy.so libnativeloader_lazy.so 7454866000 16384 bytes /system/lib64/libnativeloader_lazy.so libmemunreachable.so 745280d000 196608 bytes /system/lib64/libmemunreachable.so libvintf.so 7453bf0000 569344 bytes /system/lib64/libvintf.so libnativedisplay.so 74517a7000 77824 bytes /system/lib64/libnativedisplay.so libnativewindow.so 7450faf000 28672 bytes /system/lib64/libnativewindow.so libdl_android.so 7451e21000 12288 bytes /apex/com.android.runtime/lib64/bionic/libdl_android.so libstatslog.so 7453429000 73728 bytes /system/lib64/libstatslog.so libstatssocket.so 74533a3000 24576 bytes /apex/com.android.os.statsd/lib64/libstatssocket.so libtimeinstate.so 7451349000 49152 bytes /system/lib64/libtimeinstate.so server_configurable_flags.so 74527e7000 20480 bytes /system/lib64/server_configurable_flags.so libstatspull.so 7453973000 266240 bytes /apex/com.android.os.statsd/lib64/libstatspull.so libvndksupport.so 74538ed000 16384 bytes /system/lib64/libvndksupport.so libnativebridge.so 74532ed000 24576 bytes /apex/com.android.art/lib64/libnativebridge.so libmedia_codeclist.so 745378d000 65536 bytes /system/lib64/libmedia_codeclist.so libaudiomanager.so 7450b01000 20480 bytes /system/lib64/libaudiomanager.so libdatasource.so 7453761000 81920 bytes /system/lib64/libdatasource.so libstagefright.so 7450bc4000 1802240 bytes /system/lib64/libstagefright.so libstagefright_foundation.so 745318a000 212992 bytes /system/lib64/libstagefright_foundation.so libstagefright_http_support.so 745000f000 16384 bytes /system/lib64/libstagefright_http_support.so libdng_sdk.so 74537c1000 778240 bytes /system/lib64/libdng_sdk.so libexpat.so 7450ac2000 139264 bytes /system/lib64/libexpat.so libjpeg.so 7450654000 319488 bytes /system/lib64/libjpeg.so libpiex.so 7452ae7000 102400 bytes /system/lib64/libpiex.so libpng.so 7452903000 217088 bytes /system/lib64/libpng.so libbinder_ndk.so 7450a9f000 73728 bytes /system/lib64/libbinder_ndk.so libheif.so 745231c000 40960 bytes /system/lib64/libheif.so libprotobuf-cpp-lite.so 7452004000 483328 bytes /system/lib64/libprotobuf-cpp-lite.so libft2.so 74513ab000 593920 bytes /system/lib64/libft2.so libsync.so 7451dcf000 16384 bytes /system/lib64/libsync.so libforcedark.so 74546f0000 20480 bytes /system/lib64/libforcedark.so libicuuc.so 7451b4a000 1789952 bytes /apex/com.android.art/lib64/libicuuc.so libicui18n.so 7454d81000 2539520 bytes /apex/com.android.art/lib64/libicui18n.so libbpf.so 74534cd000 36864 bytes /system/lib64/libbpf.so android.hardware.memtrack@1.0.so 7450e03000 86016 bytes /system/lib64/android.hardware.memtrack@1.0.so libprocinfo.so 7452f24000 16384 bytes /system/lib64/libprocinfo.so android.hardware.graphics.allocator@2.0.so74511c3000 98304 bytes /system/lib64/android.hardware.graphics.allocator@2.0.so android.hardware.graphics.allocator@3.0.so7452403000 98304 bytes /system/lib64/android.hardware.graphics.allocator@3.0.so android.hardware.graphics.allocator@4.0.so7452392000 90112 bytes /system/lib64/android.hardware.graphics.allocator@4.0.so android.hardware.graphics.common-V1-ndk_platform.so74528c2000 32768 bytes /system/lib64/android.hardware.graphics.common-V1-ndk_platform.so android.hardware.graphics.common@1.2.so 745108e000 16384 bytes /system/lib64/android.hardware.graphics.common@1.2.so android.hardware.graphics.mapper@2.0.so 74551c5000 106496 bytes /system/lib64/android.hardware.graphics.mapper@2.0.so android.hardware.graphics.mapper@2.1.so 745468d000 110592 bytes /system/lib64/android.hardware.graphics.mapper@2.1.so android.hardware.graphics.mapper@3.0.so 7450203000 118784 bytes /system/lib64/android.hardware.graphics.mapper@3.0.so android.hardware.graphics.mapper@4.0.so 7453ad2000 147456 bytes /system/lib64/android.hardware.graphics.mapper@4.0.so libgralloctypes.so 745524a000 77824 bytes /system/lib64/libgralloctypes.so android.hardware.graphics.bufferqueue@1.0.so7450a43000 245760 bytes /system/lib64/android.hardware.graphics.bufferqueue@1.0.so android.hardware.graphics.bufferqueue@2.0.so7450f06000 217088 bytes /system/lib64/android.hardware.graphics.bufferqueue@2.0.so android.hardware.graphics.common@1.1.so 7453729000 16384 bytes /system/lib64/android.hardware.graphics.common@1.1.so android.hidl.token@1.0-utils.so 7452fbb000 20480 bytes /system/lib64/android.hidl.token@1.0-utils.so android.frameworks.bufferhub@1.0.so 745505c000 122880 bytes /system/lib64/android.frameworks.bufferhub@1.0.so libbufferhub.so 74526d4000 61440 bytes /system/lib64/libbufferhub.so libbufferhubqueue.so 745334e000 114688 bytes /system/lib64/libbufferhubqueue.so libpdx_default_transport.so 745104f000 155648 bytes /system/lib64/libpdx_default_transport.so libandroid_runtime_lazy.so 7450605000 16384 bytes /system/lib64/libandroid_runtime_lazy.so libmediadrm.so 745028f000 188416 bytes /system/lib64/libmediadrm.so libmedia_omx.so 74536ce000 192512 bytes /system/lib64/libmedia_omx.so libmedia_jni_utils.so 7450bab000 12288 bytes /system/lib64/libmedia_jni_utils.so libmediandk_utils.so 7451fc2000 16384 bytes /system/lib64/libmediandk_utils.so libbacktrace.so 74520d4000 159744 bytes /system/lib64/libbacktrace.so android.hardware.configstore@1.0.so 7453492000 143360 bytes /system/lib64/android.hardware.configstore@1.0.so android.hardware.configstore-utils.so 7451774000 16384 bytes /system/lib64/android.hardware.configstore-utils.so libSurfaceFlingerProp.so 7454645000 114688 bytes /system/lib64/libSurfaceFlingerProp.so android.hardware.graphics.common@1.0.so 7452fe7000 16384 bytes /system/lib64/android.hardware.graphics.common@1.0.so android.system.suspend@1.0.so 7450e87000 114688 bytes /system/lib64/android.system.suspend@1.0.so libpcre2.so 7450497000 327680 bytes /system/lib64/libpcre2.so libpackagelistparser.so 74517e0000 12288 bytes /system/lib64/libpackagelistparser.so capture_state_listener-aidl-V1-cpp.so 7450fe1000 40960 bytes /system/lib64/capture_state_listener-aidl-V1-cpp.so libaudioutils.so 745328e000 139264 bytes /system/lib64/libaudioutils.so libmediautils.so 74550c2000 253952 bytes /system/lib64/libmediautils.so libnblog.so 745270b000 204800 bytes /system/lib64/libnblog.so libvibrator.so 7453004000 49152 bytes /system/lib64/libvibrator.so libshootdetect.so 745118e000 28672 bytes /system/lib64/libshootdetect.so libstdc++.so 74512ee000 16384 bytes /system/lib64/libstdc++.so libelevoc_single_rn.so 7452d19000 1695744 bytes /system/lib64/libelevoc_single_rn.so libcgrouprc.so 745026f000 20480 bytes /system/lib64/libcgrouprc.so libhidl-gen-utils.so 74519e8000 57344 bytes /system/lib64/libhidl-gen-utils.so libtinyxml2.so 745451c000 106496 bytes /system/lib64/libtinyxml2.so android.hardware.media.omx@1.0.so 7453b43000 495616 bytes /system/lib64/android.hardware.media.omx@1.0.so libdovi.so 74523dc000 131072 bytes /system/lib64/libdovi.so libstagefright_framecapture_utils.so 7455112000 180224 bytes /system/lib64/libstagefright_framecapture_utils.so libcodec2.so 7453d2a000 12288 bytes /system/lib64/libcodec2.so libcodec2_vndk.so 745158d000 610304 bytes /system/lib64/libcodec2_vndk.so libmedia_omx_client.so 7450eeb000 24576 bytes /system/lib64/libmedia_omx_client.so libsfplugin_ccodec.so 744ff22000 602112 bytes /system/lib64/libsfplugin_ccodec.so libsfplugin_ccodec_utils.so 745182a000 303104 bytes /system/lib64/libsfplugin_ccodec_utils.so libstagefright_codecbase.so 745130e000 32768 bytes /system/lib64/libstagefright_codecbase.so libstagefright_omx_utils.so 74519b1000 24576 bytes /system/lib64/libstagefright_omx_utils.so libRScpp.so 7451af5000 290816 bytes /system/lib64/libRScpp.so libhidlallocatorutils.so 7451e4b000 12288 bytes /system/lib64/libhidlallocatorutils.so libhidlmemory.so 7452ce8000 28672 bytes /system/lib64/libhidlmemory.so android.hidl.allocator@1.0.so 7451945000 77824 bytes /system/lib64/android.hidl.allocator@1.0.so android.hidl.memory@1.0.so 7452be0000 122880 bytes /system/lib64/android.hidl.memory@1.0.so android.hardware.cas.native@1.0.so 745454e000 102400 bytes /system/lib64/android.hardware.cas.native@1.0.so android.hardware.drm@1.0.so 7453c89000 425984 bytes /system/lib64/android.hardware.drm@1.0.so android.hardware.common-V1-ndk_platform.so74506e6000 20480 bytes /system/lib64/android.hardware.common-V1-ndk_platform.so android.hardware.media@1.0.so 7451220000 16384 bytes /system/lib64/android.hardware.media@1.0.so android.hidl.token@1.0.so 744ffcd000 86016 bytes /system/lib64/android.hidl.token@1.0.so libmediadrmmetrics_lite.so 745101c000 122880 bytes /system/lib64/libmediadrmmetrics_lite.so android.hardware.drm@1.1.so 7452b53000 286720 bytes /system/lib64/android.hardware.drm@1.1.so android.hardware.drm@1.2.so 7454741000 430080 bytes /system/lib64/android.hardware.drm@1.2.so android.hardware.drm@1.3.so 7451d99000 159744 bytes /system/lib64/android.hardware.drm@1.3.so libunwindstack.so 74547d0000 454656 bytes /system/lib64/libunwindstack.so android.hardware.configstore@1.1.so 7452861000 122880 bytes /system/lib64/android.hardware.configstore@1.1.so libspeexresampler.so 7451933000 20480 bytes /system/lib64/libspeexresampler.so libdolbyottcontrol.so 745294d000 1462272 bytes /system/lib64/libdolbyottcontrol.so android.hardware.media.bufferpool@2.0.so74545c1000 241664 bytes /system/lib64/android.hardware.media.bufferpool@2.0.so libion.so 7450568000 16384 bytes /system/lib64/libion.so libfmq.so 7450048000 16384 bytes /system/lib64/libfmq.so libstagefright_bufferpool@2.0.1.so 7451283000 172032 bytes /system/lib64/libstagefright_bufferpool@2.0.1.so android.hardware.media.c2@1.0.so 745165b000 655360 bytes /system/lib64/android.hardware.media.c2@1.0.so libcodec2_client.so 74505c8000 151552 bytes /system/lib64/libcodec2_client.so libstagefright_bufferqueue_helper.so 7453b15000 90112 bytes /system/lib64/libstagefright_bufferqueue_helper.so libstagefright_omx.so 7455145000 327680 bytes /system/lib64/libstagefright_omx.so libstagefright_xmlparser.so 7452694000 90112 bytes /system/lib64/libstagefright_xmlparser.so android.hidl.memory.token@1.0.so 7451525000 77824 bytes /system/lib64/android.hidl.memory.token@1.0.so android.hardware.cas@1.0.so 74535aa000 282624 bytes /system/lib64/android.hardware.cas@1.0.so liblzma.so 745050b000 180224 bytes /system/lib64/liblzma.so libdexfile_support.so 74518ec000 20480 bytes /system/lib64/libdexfile_support.so android.hidl.safe_union@1.0.so 7452647000 12288 bytes /system/lib64/android.hidl.safe_union@1.0.so android.hardware.media.c2@1.1.so 7452b04000 217088 bytes /system/lib64/android.hardware.media.c2@1.1.so libcodec2_hidl_client@1.0.so 7450e44000 114688 bytes /system/lib64/libcodec2_hidl_client@1.0.so libcodec2_hidl_client@1.1.so 745462d000 16384 bytes /system/lib64/libcodec2_hidl_client@1.1.so libclang_rt.ubsan_standalone-aarch64-android.so74502c5000 1777664 bytes /system/lib64/libclang_rt.ubsan_standalone-aarch64-android.so libavenhancements.so 7455583000 512000 bytes /system/system_ext/lib64/libavenhancements.so libstagefright_httplive.so 74556d8000 544768 bytes /system/lib64/libstagefright_httplive.so libmediaplayerservice.so 73cf6c2000 1290240 bytes /system/lib64/libmediaplayerservice.so libnbaio.so 74558f5000 45056 bytes /system/lib64/libnbaio.so libdrmframework.so 745598a000 143360 bytes /system/lib64/libdrmframework.so libpowermanager.so 74558a0000 77824 bytes /system/lib64/libpowermanager.so libart.so 73cf001000 7012352 bytes /apex/com.android.art/lib64/libart.so libartpalette.so 74554f5000 16384 bytes /apex/com.android.art/lib64/libartpalette.so libsigchain.so 745552b000 20480 bytes /system/lib64/libsigchain.so libartbase.so 73cef87000 495616 bytes /apex/com.android.art/lib64/libartbase.so libdexfile.so 73cfe65000 270336 bytes /apex/com.android.art/lib64/libdexfile.so libdexfile_external.so 7455691000 28672 bytes /apex/com.android.art/lib64/libdexfile_external.so libprofile.so 7455549000 217088 bytes /apex/com.android.art/lib64/libprofile.so libartpalette-system.so 73cef48000 24576 bytes /system/lib64/libartpalette-system.so libtombstoned_client.so 74557ed000 24576 bytes /system/lib64/libtombstoned_client.so libadbconnection.so 73c6cd4000 65536 bytes /apex/com.android.art/lib64/libadbconnection.so libadbconnection_client.so 73c6c80000 221184 bytes /apex/com.android.adbd/lib64/libadbconnection_client.so libperfetto_hprof.so 73c6885000 372736 bytes /apex/com.android.art/lib64/libperfetto_hprof.so libandroid.so 73c6859000 147456 bytes /system/lib64/libandroid.so libxml2.so 73c5584000 1261568 bytes /system/lib64/libxml2.so libaaudio.so 73c54f8000 28672 bytes /system/lib64/libaaudio.so libaaudio_internal.so 73c551f000 311296 bytes /system/lib64/libaaudio_internal.so libamidi.so 73c54a6000 36864 bytes /system/lib64/libamidi.so libcamera2ndk.so 73c5442000 249856 bytes /system/lib64/libcamera2ndk.so libjnigraphics.so 73c543a000 24576 bytes /system/lib64/libjnigraphics.so libOpenMAXAL.so 73c53c6000 16384 bytes /system/lib64/libOpenMAXAL.so libOpenSLES.so 73c53a9000 16384 bytes /system/lib64/libOpenSLES.so libRS.so 73c5286000 73728 bytes /system/lib64/libRS.so libutilscallstack.so 73c5344000 24576 bytes /system/lib64/libutilscallstack.so android.hardware.renderscript@1.0.so 73c52e1000 372736 bytes /system/lib64/android.hardware.renderscript@1.0.so libwebviewchromium_plat_support.so 73c5246000 20480 bytes /system/lib64/libwebviewchromium_plat_support.so libicu_jni.so 73c521f000 53248 bytes /apex/com.android.art/lib64/libicu_jni.so libjavacore.so 73c5182000 253952 bytes /apex/com.android.art/lib64/libjavacore.so libandroidio.so 73c51d0000 16384 bytes /apex/com.android.art/lib64/libandroidio.so libopenjdk.so 73c3907000 221184 bytes /apex/com.android.art/lib64/libopenjdk.so libopenjdkjvm.so 73c3970000 40960 bytes /apex/com.android.art/lib64/libopenjdkjvm.so libart-compiler.so 73c358f000 3493888 bytes /apex/com.android.art/lib64/libart-compiler.so libvixl.so 73c336c000 2113536 bytes /apex/com.android.art/lib64/libvixl.so libqti-at.so 73b9973000 16384 bytes /system/system_ext/lib64/libqti-at.so libqti-perfd-client_system.so 73b99b5000 32768 bytes /system/system_ext/lib64/libqti-perfd-client_system.so vendor.qti.hardware.perf@2.0.so 73b991a000 118784 bytes /system/system_ext/lib64/vendor.qti.hardware.perf@2.0.so libmiuinative.so 73b80d3000 86016 bytes /system/lib64/libmiuinative.so libjavacrypto.so 73b7a80000 294912 bytes /apex/com.android.conscrypt/lib64/libjavacrypto.so libcrypto.so 73b7b07000 1126400 bytes /apex/com.android.conscrypt/lib64/libcrypto.so libssl.so 73b7d22000 335872 bytes /apex/com.android.conscrypt/lib64/libssl.so libc++.so 73b7c47000 737280 bytes /apex/com.android.conscrypt/lib64/libc++.so libmedia_jni.so 73b2ce5000 544768 bytes /system/lib64/libmedia_jni.so libmediadrmmetrics_consumer.so 73b2ca8000 28672 bytes /system/lib64/libmediadrmmetrics_consumer.so libmtp.so 73b29c4000 245760 bytes /system/lib64/libmtp.so libsonivox.so 73b2d96000 614400 bytes /system/lib64/libsonivox.so libmediadrmmetrics_full.so 73b2e56000 147456 bytes /system/lib64/libmediadrmmetrics_full.so libasyncio.so 73b2a39000 12288 bytes /system/lib64/libasyncio.so libprotobuf-cpp-full.so 73b2a41000 2228224 bytes /system/lib64/libprotobuf-cpp-full.so libsoundpool.so 73b2e82000 86016 bytes /system/lib64/libsoundpool.so libaudioeffect_jni.so 73b299e000 49152 bytes /system/lib64/libaudioeffect_jni.so librs_jni.so 73b2947000 73728 bytes /system/lib64/librs_jni.so android.hardware.graphics.mapper@3.0-impl-qti-display.so73b1b09000 45056 bytes /vendor/lib64/hw/android.hardware.graphics.mapper@3.0-impl-qti-display.so libutils.so 73b1f02000 122880 bytes /apex/com.android.vndk.v30/lib64/libutils.so libcutils.so 73b1e1b000 73728 bytes /apex/com.android.vndk.v30/lib64/libcutils.so libhardware.so 73b2017000 12288 bytes /apex/com.android.vndk.v30/lib64/libhardware.so libhidlbase.so 73b1cc0000 757760 bytes /apex/com.android.vndk.v30/lib64/libhidlbase.so libqdMetaData.so 73b1fca000 28672 bytes /vendor/lib64/libqdMetaData.so libgrallocutils.so 73b1e91000 45056 bytes /vendor/lib64/libgrallocutils.so libgralloccore.so 73b1b4d000 69632 bytes /vendor/lib64/libgralloccore.so vendor.qti.hardware.display.mapper@3.0.so73b1e45000 98304 bytes /vendor/lib64/vendor.qti.hardware.display.mapper@3.0.so vendor.qti.hardware.display.mapperextensions@1.0.so73b1b87000 131072 bytes /vendor/lib64/vendor.qti.hardware.display.mapperextensions@1.0.so android.hardware.graphics.mapper@2.0.so 73b2096000 102400 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.mapper@2.0.so android.hardware.graphics.mapper@2.1.so 73b1c8d000 106496 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.mapper@2.1.so vendor.qti.hardware.display.mapperextensions@1.1.so73b20dc000 122880 bytes /vendor/lib64/vendor.qti.hardware.display.mapperextensions@1.1.so android.hardware.graphics.mapper@3.0.so 73b1bc4000 114688 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.mapper@3.0.so libc++.so 73b1a4a000 716800 bytes /apex/com.android.vndk.v30/lib64/libc++.so libprocessgroup.so 73b19c1000 258048 bytes /apex/com.android.vndk.v30/lib64/libprocessgroup.so libbase.so 73b1c02000 249856 bytes /apex/com.android.vndk.v30/lib64/libbase.so libgralloc.qti.so 73b1db0000 32768 bytes /vendor/lib64/libgralloc.qti.so libgralloctypes.so 73b1a1d000 77824 bytes /apex/com.android.vndk.v30/lib64/libgralloctypes.so android.hardware.graphics.common@1.2.so 73b1dd8000 12288 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.common@1.2.so android.hardware.graphics.mapper@4.0.so 73b1f8c000 151552 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.mapper@4.0.so libion.so 73b2063000 16384 bytes /apex/com.android.vndk.v30/lib64/libion.so android.hardware.graphics.common@1.0.so 73b1c78000 12288 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.common@1.0.so android.hardware.graphics.common@1.1.so 73b1ece000 12288 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.common@1.1.so android.hardware.graphics.common-V1-ndk_platform.so73b19a8000 24576 bytes /apex/com.android.vndk.v30/lib64/android.hardware.graphics.common-V1-ndk_platform.so android.hardware.common-V1-ndk_platform.so73b1f4f000 16384 bytes /apex/com.android.vndk.v30/lib64/android.hardware.common-V1-ndk_platform.so android.hardware.graphics.mapper@4.0-impl-qti-display.so73b18dc000 81920 bytes /vendor/lib64/hw/android.hardware.graphics.mapper@4.0-impl-qti-display.so libhidltransport.so 73b1976000 12288 bytes /vendor/lib64/libhidltransport.so vendor.qti.hardware.display.mapper@4.0.so73b1907000 110592 bytes /vendor/lib64/vendor.qti.hardware.display.mapper@4.0.so libEGL_adreno.so 73b180f000 45056 bytes /vendor/lib64/egl/libEGL_adreno.so libadreno_utils.so 73b1889000 94208 bytes /vendor/lib64/libadreno_utils.so libgsl.so 73b15d5000 2125824 bytes /vendor/lib64/libgsl.so libz.so 73b1846000 94208 bytes /apex/com.android.vndk.v30/lib64/libz.so libGLESv2_adreno.so 73b11d5000 4030464 bytes /vendor/lib64/egl/libGLESv2_adreno.so libllvm-glnext.so 73b0483000 13778944 bytes /vendor/lib64/libllvm-glnext.so libGLESv1_CM_adreno.so 73b0444000 241664 bytes /vendor/lib64/egl/libGLESv1_CM_adreno.so eglSubDriverAndroid.so 73b0409000 77824 bytes /vendor/lib64/egl/eglSubDriverAndroid.so vendor.qti.hardware.display.mapper@2.0.so73b03e6000 102400 bytes /vendor/lib64/vendor.qti.hardware.display.mapper@2.0.so libcompiler_rt.so 73b0306000 544768 bytes /system/lib64/libcompiler_rt.so libqti_performance.so 73b02dd000 28672 bytes /system/system_ext/lib64/libqti_performance.so vendor.qti.hardware.iop@2.0.so 73b029b000 102400 bytes /system/system_ext/lib64/vendor.qti.hardware.iop@2.0.so libwebviewchromium_loader.so 73b01e7000 16384 bytes /system/lib64/libwebviewchromium_loader.so libGameVMP.so 734f80c000 454656 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libGameVMP.so libmmkv.so 7346bf3000 532480 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libmmkv.so libxcrash.so 7346b5f000 118784 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libxcrash.so libxdl.so 7346b22000 53248 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libxdl.so libdulog.so 7345e1a000 114688 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libdulog.so liboaid_crash_fixer_so_loader.so 733aa2c000 36864 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/liboaid_crash_fixer_so_loader.so libxhook.so 7345dcd000 53248 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libxhook.so libc++_shared.so 7345c84000 929792 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libc++_shared.so libxunwind.so 7345d9f000 69632 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libxunwind.so libduhook.so 733aa95000 1220608 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libduhook.so libshadowhook.so 733aa63000 81920 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libshadowhook.so libduHA.so 73398c7000 12288 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libduHA.so libszstone.so 7338556000 2220032 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libszstone.so libdewuhelper.so 733852d000 28672 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libdewuhelper.so libdusanwa.so 73384c2000 139264 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libdusanwa.so libkbArt.so 733848e000 114688 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libkbArt.so libdu_mediacache.so 73381df000 2744320 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libdu_mediacache.so libmonochrome_64.so 73701e7000 183156736 bytes/data/app/~~LsoxdtSgGQhOGoQClL7nGQ==/com.google.android.trichromelibrary_636712333-F1txeyJUk4kuPZelwpCAuQ==/base.apk!/lib/arm64-v8a/libmonochrome_64.so libimagepipeline.so 72f92c7000 16384 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libimagepipeline.so libnative-crypto-hook.so 72ee08e000 69632 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libnative-crypto-hook.so libfbjni.so 72f834f000 200704 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libfbjni.so libduv8.so 72b0b05000 15179776 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libduv8.so libyoga.so 72b088a000 184320 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libyoga.so libhawk.so 72ab3ce000 1994752 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libhawk.so gralloc.msmnile.so 728cc8c000 45056 bytes /vendor/lib64/hw/gralloc.msmnile.so libboost.so 7289460000 16384 bytes /system/lib64/libboost.so libByteVC1_dec.so 727e505000 450560 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libByteVC1_dec.so libttheif_dec.so 727e5d8000 147456 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libttheif_dec.so libheif.so 727e46c000 65536 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libheif.so libstatic-webp.so 727e38b000 569344 bytes /data/app/~~YxjKiMfU5GhbqDTDhPhhpw==/com.shizhuang.duapp-f6V4lziH2H4ySLWwb1S4_A==/lib/arm64/libstatic-webp.so libMNN.so 72bf04c000 1904640 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libMNN.so libdu_edge_ai_mnn.so 72bf013000 61440 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libdu_edge_ai_mnn.so libdu_heif.so 72347c1000 1806336 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libdu_heif.so libMNN_Vulkan.so 722ffd9000 536576 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libMNN_Vulkan.so libMNN_Express.so 722fece000 798720 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libMNN_Express.so libMNNOpenCV.so 722fe60000 266240 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libMNNOpenCV.so libMNN_CL.so 722fccb000 1323008 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libMNN_CL.so libxyp2psdk.so 722f9c8000 3100672 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libxyp2psdk.so libijmdetect_drisk.so 722a31e000 1417216 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libijmdetect_drisk.so libdu_security.so 722a247000 172032 bytes /data/data/com.shizhuang.duapp/files/soloader_x64/libdu_security.so [*] 共找到 323 个SO模块
下面我将这些模块按功能大类进行归纳总结:
1. 系统核心与运行时环境 (System Core & Runtime)
这些是Android系统运行的基础,提供最根本的服务。
-
C库与基础运行时:
libc.so
,libm.so
,libdl.so
(Bionic C库),libc++.so
(C++标准库),libutils.so
,libcutils.so
(Android工具库),libbase.so
。 -
Android运行时(ART):
libart.so
,libartbase.so
,libart-compiler.so
,libdexfile.so
,libjavacore.so
,libopenjdk.so
。负责Java字节码的执行、垃圾回收等。 -
原生库加载:
libnativeloader.so
,libnativebridge.so
。管理SO库的加载。
2. 硬件抽象层与驱动接口 (Hardware Abstraction Layer - HAL)
Android通过HAL来标准化硬件访问,应用间接使用这些库。
-
图形显示:
libui.so
,libgui.so
,libgralloc.qti.so
,libgralloctypes.so
, 以及大量的android.hardware.graphics.*.so
(如allocator
,mapper
,common
,bufferqueue
)。 -
多媒体:
android.hardware.media.*.so
,android.hardware.cas.*.so
(条件接收系统),android.hardware.drm.*.so
(数字版权管理)。 -
传感器:
libsensor.so
,android.hardware.sensors.*.so
。 -
相机:
libcamera_client.so
,libcamera2ndk.so
,libcamera_metadata.so
。 -
音频:
libaudioclient.so
,libaudiofoundation.so
,libaudiopolicy.so
,libaaudio.so
。 -
其他硬件:
android.hardware.memtrack@1.0.so
,android.hardware.configstore@1.0.so
,libvibrator.so
。
3. 图形与渲染 (Graphics & Rendering)
负责2D和3D图形绘制、UI渲染。
-
OpenGL ES:
libEGL.so
,libGLESv1_CM.so
,libGLESv2.so
,libGLESv3.so
(OpenGL接口库),以及高通的具体实现libEGL_adreno.so
,libGLESv2_adreno.so
。 -
底层图形驱动:
libhwui.so
(硬件加速UI渲染),libgsl.so
(高通图形驱动),libllvm-glnext.so
(高通GPU编译器)。 -
字体与文本渲染:
libminikin.so
(字体),libharfbuzz_ng.so
(文本 shaping),libft2.so
(FreeType, 字体光栅化)。 -
图像处理:
libRScpp.so
(RenderScript),libpng.so
,libjpeg.so
。
4. 多媒体处理 (Media Processing)
处理音视频的编解码、播放、录制。
-
媒体框架:
libmedia.so
,libmediaplayerservice.so
,libstagefright.so
(核心媒体引擎),libmediadrm.so
。 -
编解码器:
libcodec2.so
,libcodec2_vndk.so
,libsfplugin_ccodec.so
(软件编解码器)。 -
格式解析:
libstagefright_httplive.so
(HLS流),libexpat.so
(XML解析,用于SMIL等)。 -
音效处理:
libsonivox.so
(MIDI合成器),libelevoc_single_rn.so
(Elevoc AI降噪)。
5. 网络与连接 (Networking & Connectivity)
处理网络通信和数据交换。
-
网络栈:
libnetd_client.so
,libnetdutils.so
。 -
加密与安全通信:
libcrypto.so
(OpenSSL加密算法),libssl.so
(SSL/TLS)。 -
数据序列化:
libprotobuf-cpp-lite.so
,libprotobuf-cpp-full.so
(Protocol Buffers)。
6. 进程间通信 (Inter-Process Communication - IPC)
Android组件和系统服务通信的基石。
-
Binder:
libbinder.so
(最核心的IPC机制),libbinder_ndk.so
(Binder的NDK接口)。 -
HIDL:
libhidlbase.so
,libhidltransport.so
,android.hidl.*.so
(用于HAL的IPC接口)。 -
其他:
libfmq.so
(快速消息队列)。
7. 安全与权限 (Security & Permissions)
负责系统安全和权限检查。
-
SELinux:
libselinux.so
。 -
安全功能:
libincfs.so
(增量文件系统,用于APK验证),libvndksupport.so
(Vendor NDK支持)。
8. 工具与辅助库 (Utility & Helper Libraries)
提供各种辅助功能。
-
压缩:
libz.so
(gzip),liblzma.so
(xz)。 -
XML解析:
libxml2.so
。 -
日志:
liblog.so
。 -
数据库:
libsqlite.so
。 -
调试与跟踪:
libbacktrace.so
,libunwindstack.so
(调用栈展开),libperfetto_hprof.so
(性能分析)。
9. 应用框架与NDK (Application Framework & NDK)
连接Java层和Native层的桥梁,提供Android特色功能。
-
Android Runtime交互:
libandroid_runtime.so
。 -
NDK库:
libandroid.so
,libjnigraphics.so
,libOpenSLES.so
,libOpenMAXAL.so
,libnativewindow.so
。为Native代码提供访问Android系统功能的API。
10. 厂商特定与设备特定 (Vendor & Device Specific)
由手机厂商(如小米)或芯片厂商(如高通Qualcomm)提供的优化库。
-
高通(Qualcomm):大量以
libqti-
,vendor.qti.hardware.
开头的库,以及Adreno GPU系列库。 -
小米(Xiaomi):
libmiuinative.so
。 -
其他:
libavenhancements.so
,libdolbyottcontrol.so
(杜比音效),libmillet_comm.so
(小米自研通信机制)。
总结
这个列表清晰地展示了 一个典型的Android应用并不是一个孤立的岛屿,而是构建在一个极其庞大且复杂的系统生态之上的。应用通过依赖这些系统提供的SO库,才能高效、安全地使用设备的硬件(摄像头、麦克风、GPU、传感器)、系统服务(通知、窗口管理、活动管理)和核心功能(网络、图形、多媒体)。
对于安全研究人员或开发者来说,分析这些依赖可以帮助:
-
了解攻击面:例如,
libcrypto.so
和libssl.so
的版本可能存在漏洞。 -
分析应用行为:应用依赖了多媒体和图形库,表明它可能有丰富的音视频和UI功能。
-
性能优化:识别可能引起性能瓶颈的大型库(如
libllvm-glnext.so
有13MB+)。 -
兼容性排查:某些厂商特定库可能在其它品牌的设备上不存在或行为不一致。
这份列表中的模块绝大部分都是Android操作系统原生的,是正常且必需的。
分析缺失的SO文件
从您提供的文件列表和Frida输出对比来看,以下SO文件在APK中存在但没有被加载到内存中:
-
libGameVData.so - 存在但未加载
-
libantitrace.so - 存在但未加载
-
libarcore_sdk_c.so - 存在但未加载
-
libarcore_sdk_jni.so - 存在但未加载
-
libbitmapmonitor.so - 存在但未加载
-
libbytehook.so - 存在但未加载
-
libdewuffmpeg.so - 存在但未加载
-
libduapm.so - 存在但未加载
-
libducloudpix.so - 存在但未加载
-
libduplayer.so - 存在但未加载
-
libfb.so - 存在但未加载
-
libgifimage.so - 存在但未加载
-
libkoom-java.so - 存在但未加载
-
libkwai-android-base.so - 存在但未加载
-
libmemory-hook.so - 存在但未加载
-
libmsaoaidauth.so - 存在但未加载
-
libnative-filters.so - 存在但未加载
-
libnative-imagetranscoder.so - 存在但未加载
-
libnativebitmap.so - 存在但未加载
-
libnetwork-diagnose.so - 存在但未加载
-
libxcrash_dumper.so - 存在但未加载
-
libxhook_lib.so - 存在但未加载
可能的原因
-
延迟加载:某些SO文件可能只在特定功能被调用时才加载
-
条件加载:根据设备特性或配置决定是否加载某些SO
-
动态加载:应用可能使用
System.load()
而不是System.loadLibrary()
动态加载SO -
插件化架构:某些SO可能作为插件,只在需要时才加载
-
错误处理:某些SO加载失败但被应用静默处理
-
架构不匹配:某些SO可能针对不同CPU架构,当前设备不匹配