ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LibChecker 2.5.x 版本技术演进解析:从 16 KB 页对齐检测到 WebUI 应用信息导出

LibChecker 2.5.x 版本技术演进解析:从 16 KB 页对齐检测到 WebUI 应用信息导出 移动开发开发工具逆向工程【免费下载链接】LibCheckerAn app to view libraries used in apps in your device.项目地址https://gitcode.com/gh_mirrors/li/LibChecker点击查看免费下载LibChecker 是一款用于查看设备上应用所使用库含原生库、DEX、组件与签名信息的开源 Android 应用。本文以仓库内 changelog/CHANGELOG.md对应 changelog/CHANGELOG_CN.md中 2.5.1 至 2.5.4 四个版本的变更记录为主线逐项解析这些版本背后的核心技术能力Android 16/17 适配、16 KB 页对齐检测、WebUI 应用信息导出、快照体系增强、库引用统计Action 类型、Modern Xposed 模块识别等并结合仓库源码给出实现层面的印证。读完本文你将理解 LibChecker 近几个版本的功能脉络、关键检测逻辑的落地位置以及如何借助这些能力进行应用库分析与 16 KB 适配排查。一、版本总览2.5.x 系列的演进主线从 2.5.1 到 2.5.4LibChecker 的演进可以归纳为四条主线系统版本适配先后适配 Android 162.5.1、Android 172.5.4并覆盖 Android 15 的已归档应用信息记录、Android 8 的 16 KB 对齐图表统计。安装包分析能力增强新增 APKsSplit APK 集合分析、APK 下载链接分享元数据轻量分析、签名方案检测优化、ELF 原生库检测标签扩充。快照Snapshot体系完善快照自动删除、Build ID 与安全补丁等级记录、原生库体积变化比例、备份可靠性修复。库识别与统计升级规则库从 V43 更新至 V44引入基于 IntentFilteraction标签的库识别方式库引用统计新增Action类型。版本与核心主题的对应关系如下版本系统适配核心新增能力2.5.1Android 16APKs 分析、16 KB 对齐标记、Compose Multiplatform 检测、快照自动删除、IEC 单位2.5.2—IntentFilter action 库识别、签名方案展示、Build ID 快照记录、图表分布显示 Android 版本2.5.3—APK 链接分享、APKS 对比、权限提供者、主题/备选图标、实时更新通知检测2.5.4Android 17WebUI 应用信息导出、Overlay 应用详情、Modern Xposed 模块识别、ZIP 对齐值展示二、16 KB 页对齐检测从是否对齐到ZIP 对齐值16 KB 页大小是 Android 15 系统对原生库的硬性要求传统设备为 4 KB 页应用内所有 ELF 原生库的段对齐必须满足 16 KB 要求。LibChecker 在 2.5.x 系列中对该能力的迭代最为密集2.5.1修正 16 KB 对齐的检测方式在 Android 8 的图表中统计 16 KB 对齐应用在原生库列表中对两类库独立标记——已开启 16 KB 对齐的库以及未压缩但未按 16 KB ZIP 对齐的库即NON 16 KB STORED标签。2.5.2再次修正原生库 16 KB 对齐的检测方法。2.5.3非标准 ELF 文件不再纳入 16 KB 检测避免误报。2.5.4对已实现 16 KB 页对齐、但未以 16 KB 页对齐压缩的原生库直接显示具体的 ZIP 对齐值。从源码看检测的核心逻辑位于 ELF 解析模块。app/src/main/kotlin/com/absinthe/libchecker/utils/elf/ElfInfo.kt中定义了pageSize: Int -1字段用于记录 ELF 的页大小ElfParser.java在解析程序头Program Header时通过minAlign Math.min(minAlign, ph.align)见ElfParser.java第 100 行汇总各段的最小对齐值而Program32Header.java/Program64Header.java分别以readWord/readLong从段头偏移处读取align字段对应 32 位 ELF 段头 0x1C 偏移、64 位 ELF 段头 0x30 偏移。这与变更记录中检测方法持续修正的迭代方向一致——对齐判断既要看 ELF 段对齐也要看 ZIP 容器内的存储对齐。实操提示针对应用进行 16 KB 适配时应确保所有原生库都带有「16 KB」标签并且没有任何原生库带有「NON 16 KB STORED」标签该提示同样出现在 2.5.1 的变更说明中。2.5.4 进一步给出具体 ZIP 对齐值可据此定位是打包器如 ApkZipper未设置alignment还是 ELF 段本身未对齐。三、WebUI 应用信息导出本地分析、可视化查看2.5.4 在设置界面新增了应用信息导出功能将应用信息导出为文件后可在 WebUIhttps://lc.absinthe.life/中打开并以可视化形式查看。变更说明强调所有分析均在本地进行即导出与对比过程不依赖云端。源码佐证导出入口实现在app/src/main/kotlin/com/absinthe/libchecker/domain/settings/ui/ExportAppsDialogView.kt与ExportAppsDialogFragment.kt对话框包含描述文本、进度指示器LinearProgressIndicator最大值 100、WebUI 骨架预览图R.drawable.ic_webui_skeleton_preview与导出按钮并通过ExportAppsDialogAction.PrimaryButtonClick触发导出动作。WebUI 地址定义于app/src/main/kotlin/com/absinthe/libchecker/constant/URLManager.ktWEBUI_PAGE常量导出的应用可以在 WebUI 查看的文案可见于app/src/main/res/values/strings.xmlexport_apps_webui_tip该文案已随多语言资源同步到values-zh-rCN、values-ar-rSA、values-zh-rTW等目录。这一功能的价值在于对超大型应用或游戏无需完整下载 APK 即可通过APK 下载链接分享2.5.3 引入下载少量元数据在 WebUI 中浏览大部分基础信息本地分析保证了隐私与离线可用性。四、快照体系自动删除、Build ID 记录与体积变化快照Snapshot是 LibChecker 用于对比应用库变化的核心功能2.5.x 系列对其做了多项增强4.1 快照自动删除2.5.1新增快照自动删除功能可设置阈值自动清理旧快照。源码中的落地路径清晰偏好键定义于app/src/main/kotlin/com/absinthe/libchecker/constant/Constants.ktPREF_SNAPSHOT_AUTO_REMOVE_THRESHOLD snapshotAutoRemoveThreshold默认值与读写入口在app/src/main/kotlin/com/absinthe/libchecker/constant/GlobalValues.ktsnapshotAutoRemoveThreshold默认-1表示不启用与app/src/main/kotlin/com/absinthe/libchecker/data/snapshot/GlobalSnapshotSettingsRepository.kt时间节点底部弹窗TimeNodeBottomSheetDialogFragment.kt中提供开关与阈值对话框交互关闭自动删除时将阈值重置为-1即禁用相关状态模型定义于domain/snapshot/timenode/model/TimeNodeBottomSheetState.ktAutoRemove、SetAutoRemoveEnabled等。4.2 Build ID 与安全补丁等级2.5.2自 2.5.2 起保存的快照会额外记录系统的Build ID和安全补丁等级security patch level当这些值发生变化时会展示在快照仪表盘上——这对于判断系统更新是否导致了库行为变化非常有用。4.3 体积变化与展示优化2.5.3快照列表与详情页中原生库类型新增体积变化比例展示快照项右侧状态指示器颜色按具体比例显示而非固定颜色。2.5.3快照不再记录assets目录内的原生库信息避免冗余修复了部分应用快照无法保存、极端情况下备份失败的问题。4.4 交互细节2.5.2 新增快照详情页长按复制标题栏信息便于记录或分享某个时间点的应用状态。五、库识别与统计IntentFilter action 与 Action 类型5.1 基于 action 标签的库识别2.5.2传统库识别依赖组件类名匹配规则。2.5.2 新增了第二种识别路径通过组件IntentFilter中的action标签来识别和标记库其展示优先级低于类名匹配。这意味着某些通过广播/服务 action 暴露身份如Xposed模块、Live Update服务的库也能被正确归类。5.2 Action 类型统计2.5.2 / 2.5.3库引用统计页面新增Action类型的高级过滤项2.5.3 起该过滤默认启用且 Action 类型统计不再过滤android命名空间避免漏掉以android.*前缀声明的系统 action。同时2.5.1 起统计中不再计入以 Application ID 开头的组件减少自引用噪声。规则库版本在 2.5.3 更新至 V432.5.4 更新至 V44规则数据随应用更新分发仓库app/schemas/下亦有数据库 Schema 演进记录如com.absinthe.libchecker.database.LCDatabase的 12–25 各版本 JSON。六、Xposed 模块识别从传统到 Modern Xposed API2.5.4 支持识别Modern Xposed API的模块信息。传统 Xposed 模块通过在assets/xposed_init中声明入口类来识别而 Modern Xposed API如 LSPosed 的新式声明采用不同的元数据格式。源码层面模块信息解析集中在app/src/main/kotlin/com/absinthe/libchecker/domain/app/detail/action/DetailAppInfoResolver.ktgetXposedModuleInfo(packageName)在Dispatchers.IO上读取模块元数据并映射作用域应用getXposedScopeAppInfo、normalizeXposedScope同时通过readZipInfo读取 APK 内相关 zip 条目第 349 行附近。这一实现同时覆盖了传统xposed_init声明与新版 API 的声明方式且与应用详情页的组件/服务信息联动展示。七、安装包分析APKs、APK 链接分享与签名方案7.1 APKs 分析与对比2.5.1 / 2.5.32.5.1 支持分析 APKsSplit APK 集合安装包2.5.3 进一步支持APKS 文件对比并修复了部分应用 Split APKs 列表获取不完整、Split APKs 原生库缺失的问题。对多 ABI/多语言拆分的应用而言APKs 支持是完整呈现原生库与资源结构的前提。7.2 APK 下载链接分享2.5.3支持将 APK 的下载链接分享至 LibChecker通过下载少量元数据即可展示大部分基础信息尤其适合超大型应用或游戏——避免了完整下载数 GB 安装包才能查看库信息的成本。7.3 签名方案检测2.5.2 / 2.5.42.5.2 在应用签名页面新增签名方案展示v1/v2/v3 等2.5.4 提升了签名方案检测的速度与准确性。签名信息是判断应用来源可信度与更新链路的重要依据。7.4 安装来源信息2.5.1 / 2.5.42.5.1安装来源页面新增安装时间信息。2.5.4将DEX 优化信息从应用属性弹窗迁移至安装来源弹窗对于已授予 Shizuku 权限的用户展示更准确的优化结果Shizuku 可读取系统级 DEX 优化状态相关能力见仓库app/src/main/kotlin/com/absinthe/libchecker/utils/ShizukuManager.kt。八、其他值得关注的细节变更应用详情页2.5.4 为 Overlay 应用新增详情页2.5.3 支持检测主题图标与备选启动图标、检测**实时更新通知Live Update Notifications、展示权限提供者**、将特定原生库提取至下载目录、在进一步操作中直接跳转更多文件管理器及商店。图表与统计2.5.2 在「图表 - 分布」中展示设备 Android 版本含即将到来的 minor 版本2.5.1 起 Android 8 可在图表中统计 16 KB 对齐应用。单位与界面2.5.1 新增「使用 IEC 单位」选项KB/MB 以 1024 进制显示2.5.1 更新为更现代的 Material Design 页面样式。组件进程指示2.5.1 修正详情页应用组件进程指示栏的显示逻辑。Telemetry2.5.1 将遥测平台迁移至 Firebase2.5.3 在非 FOSS 版本移除部分涉及启动应用统计的遥测事件FOSS 构建见app/src/foss/kotlin/com/absinthe/libchecker/utils/Telemetry.kt与 market 变体区分。Dex 页移除2.5.1 移除应用详情页的「Dex」页原因是 Dex 规则长期缺乏维护——这是以规则库维护成本决定功能存续的典型产品决策。无障碍与稳定性2.5.4 优化无障碍体验与若干 UI 设计各版本均修复了横屏宽屏设备崩溃、底部弹窗无法弹出、搜索栏内容丢失、首页列表不刷新等稳定性问题。九、规则库版本与数据库演进规则库Rules Database随版本迭代持续更新2.5.3 → V432.5.4 → V44。规则的用途是驱动库识别类名匹配 action 匹配与组件归属判断其数据模型与迁移逻辑位于app/src/main/kotlin/com/absinthe/libchecker/database/RulesRepository.ktSchema 演进记录见 app/schemas/com.absinthe.libchecker.database.RuleDatabase/1.json。主数据库LCDatabase的 Schema 已演进至第 25 版app/schemas/com.absinthe.libchecker.database.LCDatabase/说明快照、库引用统计等数据结构在多版本中持续扩展——例如 2.5.2 快照新增的 Build ID 字段即需要数据库迁移支撑。十、如何在当前版本中验证这些能力按以下路径可在 LibChecker≥ 2.5.4中逐一验证上述特性16 KB 对齐检查进入应用详情 → 原生库列表观察「16 KB」与「NON 16 KB STORED」标签对已对齐但 ZIP 未对齐的库查看具体对齐值。WebUI 导出设置 → 应用信息导出生成文件后在lc.absinthe.life打开查看可视化对比。快照自动删除快照时间节点面板开启 AutoRemove 并设置阈值默认禁用阈值-1。Action 库识别库引用统计页启用 Action 类型过滤观察基于 IntentFilter action 标记的库。Xposed 模块查看已装 Xposed/LSPosed 模块应用的详情页确认 Modern Xposed API 信息是否被正确解析。以上能力对应的源码均可通过本文引用的相对路径在仓库中深入阅读ELF 解析见 utils/elf/快照逻辑见 domain/snapshot/应用详情解析见 domain/app/detail/action/DetailAppInfoResolver.kt据此可进一步理解各功能的底层实现与检测边界。赞分享移动开发开发工具逆向工程【免费下载链接】LibCheckerAn app to view libraries used in apps in your device.项目地址https://gitcode.com/gh_mirrors/li/LibChecker点击查看免费下载相关推荐LibChecker 2.5.x 版本演进全解析从 16 KB 对齐检测、APKs 分析到 Android 17 适配LibChecker 2.5.x 版本演进全解析从 16 KB 对齐检测、APKs 分析到 Android 17 适配 导读 本文以 LibChecker 官移动开发开发工具逆向工程CPU-X硬件检测工具版本演进与技术解析CPU X硬件检测工具版本演进与技术解析 项目概述 CPU X是一款功能强大的硬件检测工具能够详细显示CPU、内存、主板、显卡等硬件信息。该项目采用C开发Dragonfly版本演进从v0.4.x到v1.0.x的技术路线图分析Dragonfly版本演进从v0.4.x到v1.0.x的技术路线图分析 Dragonfly作为一款高性能的P2P内容分发系统在版本演进过程中实现了从基础架构云原生上一篇Angular Module Federation Plugin 教程下一篇PptxGenJS与前端框架集成React/Vue中的PPT生成最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表