工具

smali/baksmali Dalvik dex 汇编与反汇编器

面向 Android Dalvik 虚拟机 dex 格式的汇编器与反汇编器:baksmali 将 dex、APK、odex 和 oat 文件反汇编为 smali 文本,smali 再把这些文本汇编回 dex 文件。README 称其语法大致参照 Jasmin 和 dedexer,支持 dex 格式的全部功能,包括注解、调试信息和行号信息。baksmali 还能对 odex 和 oat 文件做去优化(deodex),并列出 dex 文件中的类、方法、字段、字符串和引用;dexlib2 库则供 Java 程序读写 dex 文件。

目标
应用
类别
Android 工具
关联
基础工具
来源复核于

使用条件与局限

  • GitHub 已将该仓库标为归档;最后一次推送在 2024-01-17,所审阅的 master 头提交日期为 2022-03-08,比最后一个版本 v2.5.2 多十个提交,该版本于 2021-03-03 以 org.smali 构件发布到 Maven Central。README 仍将下载地址指向作者的 Bitbucket 页面。Google 维护着一个分支,其 README 说明该分支因原仓库不再维护而设立;它将命名空间改为 com.android.tools.smali,并在 Google Maven 上发布 3.x 版本(审阅时为 3.0.7)。
  • 以 Java 命令行工具和库的形式提供,编译目标为 Java 8,使用仓库自带的 Gradle 6.8.2 wrapper 构建;scripts/smali 和 scripts/baksmali 是调用 jar 的启动脚本。使用者需自备 dex、APK、odex 或 oat 文件,并可指定 API 级别;分析或去优化已优化的文件需要相匹配的启动类路径,对 oat 文件可直接使用设备上的 boot.oat。该提交中 dexlib2 的版本映射止于 dex 039(API 28),较新的 ART 版本一律映射为 API 29,因此未核实对更新 Android 版本文件的支持。
  • 仓库包含 baksmali/src/test/resources 和 dexlib2/src/test/resources 下体积很小的测试用 dex 文件、手写的 smali 示例,以及 deodexerant——一个需在 AOSP 源码树中构建、在设备端运行的 C 辅助程序,用于导出 Dalvik 的内联方法表,供 baksmali 的 -T 选项使用。仓库未提交其他 dex、APK 或系统镜像。
  • 仓库没有 LICENSE 文件,因此 GitHub 未识别出许可证;NOTICE 说明 Ben Gruver 编写的代码和 Google 版权的修改均采用 BSD 风格的三条款许可,取自 Android 开源项目的部分按 Apache-2.0 使用。本次未汇编或反汇编任何文件。

关于此条目

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · JesusFreke/smali · 修订 2771eae
  2. NOTICE GitHub · JesusFreke/smali · 修订 2771eae
  3. build.gradle#L34 GitHub · JesusFreke/smali · 修订 2771eae
  4. build.gradle#L88-L91 GitHub · JesusFreke/smali · 修订 2771eae
  5. gradle/wrapper/gradle-wrapper.properties GitHub · JesusFreke/smali · 修订 2771eae
  6. baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java GitHub · JesusFreke/smali · 修订 2771eae
  7. baksmali/src/main/java/org/jf/baksmali/DeodexCommand.java GitHub · JesusFreke/smali · 修订 2771eae
  8. baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java#L54-L74 GitHub · JesusFreke/smali · 修订 2771eae
  9. smali/src/main/java/org/jf/smali/AssembleCommand.java GitHub · JesusFreke/smali · 修订 2771eae
  10. dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java GitHub · JesusFreke/smali · 修订 2771eae
  11. deodexerant/README GitHub · JesusFreke/smali · 修订 2771eae
  12. baksmali/src/test/resources GitHub · JesusFreke/smali · 修订 2771eae
  13. https://github.com/JesusFreke/smali/compare/v2.5.2...2771eae0a11f07bd892732232e6ee4e32437230d
  14. https://repo1.maven.org/maven2/org/smali/baksmali/2.5.2/
  15. README.md GitHub · google/smali · 修订 1a36aa3

同分区更多条目:应用

应用分区全部 136 项资源