主要观点:介绍了用 LIEF(扩展版)创建 DWARF 文件的新 API 及相关插件,可将二进制分析导出为 DWARF 格式,用于逆向工程共享信息,还提到了 BinaryNinja 和 Ghidra 的插件及使用方法,IDA 暂不支持此功能,目前版本不导出注释但未来会支持。
关键信息:
- LIEF 提供创建 DWARF 的 API,可在 Python、Rust 和 C++中使用。
- 用 LIEF 创建 DWARF 时可定义函数和栈变量等。
- BinaryNinja 和 Ghidra 有生成 DWARF 的插件,可从项目管理器或 CodeBrowser 工具导出,还可通过 Java 脚本导出。
- IDA 暂不支持此功能,插件代码在[plugins/binaryninja]和[plugins/ghidra]。
重要细节: - LIEF 利用 LLVM 的 DWARF 后端创建和生成 DWARF,简化了格式实现细节。
- 定义栈变量的 DW_AT_location 较复杂,可查看相关 Github Gist。
- BinaryNinja 3.5 起有内置插件生成 DWARF 文件,但缺少导出栈变量功能。
- Ghidra 插件主要用 Java 编写,可通过多种方式导出。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。