我正在对固件进行逆向工程,我能够使其功能控制流图成功显示在 Ghidra 上。我想看看是否有办法将这些控制流图保存为文本文件或可以解析的东西,以便我可以为它编写解析器并在我的程序中使用它(我想以编程方式重新创建图形来训练我的程序来检测某些功能)。谢谢!
将 Ghidra 的控制流图保存为可解析的格式
逆向工程
吉德拉
控制流图
2021-06-10 23:28:34
2个回答
您可以使用 [无头分析器] ( https://ghidra.re/ghidra_docs/analyzeHeadlessREADME.html#recursive ) 脚本执行此操作。
在这里查看它的用法。您可以在ghidhra/support目录中找到该文件。
ghidra api 可在此处获得。您可以使用此 api 编写自定义脚本,无论是在 java 还是 python 2.7 中。
然后你可以这样做:
./analyzeHeadless /projectloacation projectname -import /binary_location -postscript /yourscript-location -deleteproject
运行您的分析。此命令通过创建一个新项目然后将其删除(-deleteproject标志,这是可选的)来在二进制文件上运行您的脚本。
您可以在他们的github 存储库中找到很多示例。例如脚本。
正如您在问题中所说,如果您想使用函数,您可以:
functions = currentProgram.getFunctionManager().getFunctions(True)
获取函数列表(在python中,如果您使用的是java,则更改语法)。
经过几天的反复试验,我找到了一个叫做 GhidraDev 的东西,它是 Eclipse 的一个附加组件,通过它你可以创建自己的 Ghidra 项目并轻松使用 API。关于如何将其安装到 eclipse 中的说明可以在 ghidra_9.0.4 -> Extensions -> Eclipse -> GhidraDev -> GhidraDev_README.html 中找到。
Ghidra 可以在这里下载:https ://ghidra-sre.org/