主要观点:
- 发布用于拆解 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 分析工具。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。