一个 Android 应用的绝大部分代码(使用 Java 编写)都会编译到 dex 文件中。当你使用 MT 打开一个 dex 文件时,它将会弹出打开方式菜单,你可以选择 Dex 编辑器、Dex 编辑器 、Dex 修复、翻译模式。
Dex 编辑器和 Dex 编辑器 均可以修改 dex 文件内的代码,两者均使用了开源项目 JesusFreke/smali 来实现,但 Dex 编辑器用的是 dexlib,已经在多年前停止了维护更新,而 Dex 编辑器 使用的是最新版的 dexlib2,和 smali 项目保持同步。
当你遇到某个 dex 文件无法正常打开时,你可以尝试使用 Dex 修复功能。注意必须把 dex 文件解压后才能使用该功能,不能在压缩包内进行修复。使用该功能需要开通 VIP。
翻译模式将会在后面统一进行介绍。
开发 Dex 编辑器 的目的就是为了取代 Dex 编辑器,虽然由于历史原因仍然在新版本中保留了后者,但还是推荐大家使用 Dex 编辑器 。
打开一个 dex 文件,选择 Dex 编辑器 ,进入后可以看到浏览、最近、搜索三个标签页。
- 浏览界面采用树形方式进行包名和类的浏览
- 最近界面记录最近打开的文件和被修改过的文件
- 搜索界面可进行搜索以及显示搜索结果
你可以把看到的类都当成一个个 smali 文件,点击进去之后看到的也是这个类对应的 Smali 代码。
如果你开通了 VIP,你还可以在菜单中选择将 Smali 转成 Java 代码,并且 MT 提供了多个 Java 反编译引擎,当你发现 Java 中某个方法反编译失败时,可以尝试切换反编译引擎。