工具
axmlprinter Android 二进制 XML 解析器
用于解析 Android 二进制 XML(例如 APK 中编译后的 AndroidManifest.xml)并输出为可读 XML 的 Java 库和命令行工具。它是 Red Naga 对 Android4ME AXMLPrinter 几乎全部重写的版本,能够处理实际样本中被篡改的文件,包括字符串表乱序和起始标签被改写等情况,并可重新写出传统 AXML 格式。自 v2.0.0 起,它还能读取 Android App Bundle 使用的 protobuf 格式 XML,并自动识别输入格式。
- 目标
- 应用
- 类别
- Android 工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 最新发布版本 v2.0.1 于 2026-03-25 发布并附预编译 jar,其标签正对应所审阅的 master 分支提交 5a8d3e5。2026-01-16 发布的 v2.0.0 通过外部贡献的拉取请求加入了只读的 protobuf 支持;不支持在 AXML 与 protobuf 之间转换。
- 用 Gradle wrapper(./gradlew jar)构建为自包含 jar,以 java -jar axmlprinter-*.jar 加二进制 XML 文件运行,可选的输出路径只适用于 AXML。CI 在 JDK 17 上构建和测试,JitPack 也使用 OpenJDK 17;依赖 protobuf-java 4.34.1,并收录 AOSP 采用 Apache-2.0 的 aapt2 Resources.proto。框架资源 ID 只能解析常见的 Android 资源。
- 输入是分析者已从 APK 或 App Bundle 中取出的单个编译后 XML 文件,而非安装包本身。测试附带名为 large_from_malware.xml 和 qihoo_jiagu_issue8.xml 的二进制清单文件,后者来自一个关于清单无法解析的问题报告,另有较小的 test.xml。
- 采用 Apache-2.0 许可,同时署名 Android4ME 2008 年的代码与 Red Naga。未提及使用 REA,本次审阅未解码任何文件。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · rednaga/axmlprinter · 修订 5a8d3e5
- build.gradle GitHub · rednaga/axmlprinter · 修订 5a8d3e5
- .github/workflows/gradle.yml GitHub · rednaga/axmlprinter · 修订 5a8d3e5
- src/test/resources GitHub · rednaga/axmlprinter · 修订 5a8d3e5
- src/main/proto/Resources.proto GitHub · rednaga/axmlprinter · 修订 5a8d3e5
- LICENSE GitHub · rednaga/axmlprinter · 修订 5a8d3e5
- https://github.com/rednaga/axmlprinter/releases/tag/v2.0.1
- https://github.com/rednaga/axmlprinter/pull/13
- https://github.com/rednaga/axmlprinter/issues/8