# 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 工具
- 关联：基础工具
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/JesusFreke/smali>
- 一手来源：<https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/smali-baksmali/>
- 记录 JSON：<https://awesomerea.org/resources/smali-baksmali/record.json>
- 英文版：[English](https://awesomerea.org/resources/smali-baksmali/index.md)

## 使用条件与局限

- 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。
- 仓库包含 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. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/README.md>
2. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/NOTICE>
3. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/build.gradle#L34>
4. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/build.gradle#L88-L91>
5. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/gradle/wrapper/gradle-wrapper.properties>
6. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/baksmali/src/main/java/org/jf/baksmali/DisassembleCommand.java>
7. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/baksmali/src/main/java/org/jf/baksmali/DeodexCommand.java>
8. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/baksmali/src/main/java/org/jf/baksmali/AnalysisArguments.java#L54-L74>
9. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/smali/src/main/java/org/jf/smali/AssembleCommand.java>
10. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/dexlib2/src/main/java/org/jf/dexlib2/VersionMap.java>
11. <https://github.com/JesusFreke/smali/blob/2771eae0a11f07bd892732232e6ee4e32437230d/deodexerant/README>
12. <https://github.com/JesusFreke/smali/tree/2771eae0a11f07bd892732232e6ee4e32437230d/baksmali/src/test/resources>
13. <https://github.com/JesusFreke/smali/compare/v2.5.2...2771eae0a11f07bd892732232e6ee4e32437230d>
14. <https://repo1.maven.org/maven2/org/smali/baksmali/2.5.2/>
15. <https://github.com/google/smali/blob/1a36aa30d18d92e63994f4b1e67a055931f5a707/README.md>

## 同分区更多条目：应用

- [dalvikus Android 逆向与 smali 编辑工具](https://awesomerea.org/zh/resources/dalvikus/index.md) · 工具
- [paranoid-deobfuscator 字符串反混淆工具](https://awesomerea.org/zh/resources/paranoid-deobfuscator/index.md) · 工具
- [Katalina Dalvik 字节码模拟器](https://awesomerea.org/zh/resources/katalina/index.md) · 工具
- [Doldrums Flutter/Dart 快照解析器](https://awesomerea.org/zh/resources/doldrums/index.md) · 工具
- [Frida UI 浏览器端 Frida 操作界面](https://awesomerea.org/zh/resources/frida-ui/index.md) · 工具
- [darter Dart 快照解析器](https://awesomerea.org/zh/resources/darter/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
