反编译 Dalvik

主要观点:

  • 发布用于拆解 Dalvik 字节码的小库,为在 Rust 中构建 Android 应用和系统服务的静态分析工具提供基础。
  • 介绍 Android 运行时 ART 及 Dalvik 字节码,以及反编译 Android 代码的工具如 Bytecode Viewer 和 Ghidra。
  • 指出现有工具的不足,如 Bytecode Viewer 无法分解某些大方法,Ghidra 存在致命缺陷(Dalvik 异常处理在其反编译器视图中不可见)。
  • 决定用 Rust 编写自己的 Dalvik 反汇编器,以更好地支持 try/catch 等,并导出 Graphviz 有向图以可视化控制流。

关键信息:

  • Android 用 ART 运行应用和系统服务,字节码为 Dalvik,打包在 Dex 文件中。
  • Bytecode Viewer 可在多个反编译器间切换,Ghidra 可解压 APK 并反编译 Dex 文件。
  • 某些大方法在 Bytecode Viewer 中无法反编译,Ghidra 反编译有异常处理相关问题。
  • 新的 Dalvik 反汇编器用 Rust 编写,支持控制流可视化,可导出 Graphviz 有向图。

重要细节:

  • 给出一段 Dalvik 字节码及其反编译后的 Java 代码示例。
  • 展示 Bytecode Viewer 中无法反编译的方法的错误消息截图。
  • 展示 Ghidra 中方法的不同视图及存在的问题截图。
  • 说明新的 Dalvik 反汇编器的开发过程及目标。
  • 提及可在 GitHub 仓库查看 graphview 示例及在 crates.io 页面获取相关 crate 以构建 Dalvik 分析工具。
阅读 28
0 条评论