前言
Ghidra 脚本的开发有两种方式,一种是直接在Ghidra的脚本管理器中新建脚本,然后在ghidra内置的基本编辑器中编写脚本,如图:
只能进行简单的编写,使用print等进行调试。另外一种就是安装Eclipse来编写脚本和调试。下面主要介绍第二种方法。因为第二个方法可以调试啊,Ghidra的API文档内容也太多了啊,还是直接下断点看变量方便啊。而且从Eclipse里面Debug模式启动Ghidra,可以实时修改脚本,实时下断点,实时运行看结果,非常方便!
Eclipse配置
下载
从Eclipse 官网 https://www.eclipse.org/downloads/packages/ 下载Eclipse IDE for C/C++ Developers
,我下载的文件名eclipse-cpp-2021-09-R-win32-x86_64.zip
解压出eclipse
文件夹,我放到了C:\Users\sud0w\OneDrive\Tools\Sec\Bin\Ghidra\eclipse
,运行eclipse.exe
第一次启动需要选择工作区,我的路径C:\Users\sud0w\OneDrive\Project\eclipse-workspace
安装pydev
选择 Help - Install New Software
Work with 输入 http://www.pydev.org/updates,点Add(可能因为网络原因比较慢,可以挂全局代理)
勾选 PyDev - PyDev for Eclipse
一路next,accept,finish,等待右下角进度条走完,提示重启Eclipse
验证安装成功:选择Window->Perspective->Open Perspective->Other, 选择 PyDev 并点击 Open
安装ghidra dev
选择 Help -> Install New Software
点击add,选择archive,选择<path>/Ghidra/Extensions/Eclipse/GhidraDev/
路径下的GhidraDev-2.x.x.zip
点击add,勾选
一路next,accept,finish,等待右下角进度条走完,会提示没有签名,点anyway,然后提示restart重启eclipse
配置本地的ghidra目录
选择 GhidraDev->preferences->Ghidra Installations.
点ADD,选择ghidra目录,然后apply and close
验证一切完毕
打开ghidra,打开Code Browser window,Script Manager Window->Script Manager
选择一个py 脚本,例如AddCommentToProgramScriptPy.py,右键选择edit with eclipse
此时eclipse提示创建project,点ok。一路默认next到
点+号,提示ghidra内有一个jpython,是否使用,点yes,然后等一会,点finish此时eclipse已经可以看到ghidrascripts项目及目录了:
新建一个Script试试
随便写一行
点run,启动ghidra,code browser,script manager,可以看到分类里有一个test,里面有刚写的脚本susutest。
运行:
到此开发和调试的环境已经搞定了。
下面讲一下如何调试
下断点,在python脚本对应的行,右键下断点
左上角选择Debug,然后点击debug,开始调试,会自动启动ghidra实例,需要注意运行前应当关闭所有已经在运行的ghidra实例。然后正常启动code browser,去脚本管理器中找到刚才下断点的脚本,并运行。等待一下,直到右侧变量窗口出现内容,说明程序已经断下来了,并且此时可以使用Eclipse的工具栏进行单步调试:
参考
A Guide to Ghidra Scripting Development for Malware ResearchersGhidra Blog - Online Courses - Intermediate scripting(推荐阅读)