前言

Ghidra 脚本的开发有两种方式,一种是直接在Ghidra的脚本管理器中新建脚本,然后在ghidra内置的基本编辑器中编写脚本,如图:

npm前端项目修改python版本 python修改script配置_ghidra


npm前端项目修改python版本 python修改script配置_逆向工程_02

只能进行简单的编写,使用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

npm前端项目修改python版本 python修改script配置_软件逆向_03


一路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

npm前端项目修改python版本 python修改script配置_ghidra_04


点击add,勾选

npm前端项目修改python版本 python修改script配置_npm前端项目修改python版本_05


一路next,accept,finish,等待右下角进度条走完,会提示没有签名,点anyway,然后提示restart重启eclipse

配置本地的ghidra目录

选择 GhidraDev->preferences->Ghidra Installations.

点ADD,选择ghidra目录,然后apply and close

npm前端项目修改python版本 python修改script配置_ghidra_06

验证一切完毕

打开ghidra,打开Code Browser window,Script Manager Window->Script Manager

选择一个py 脚本,例如AddCommentToProgramScriptPy.py,右键选择edit with eclipse

npm前端项目修改python版本 python修改script配置_npm前端项目修改python版本_07


此时eclipse提示创建project,点ok。一路默认next到

npm前端项目修改python版本 python修改script配置_eclipse_08


点+号,提示ghidra内有一个jpython,是否使用,点yes,然后等一会,点finish此时eclipse已经可以看到ghidrascripts项目及目录了:

npm前端项目修改python版本 python修改script配置_npm前端项目修改python版本_09

新建一个Script试试

npm前端项目修改python版本 python修改script配置_软件逆向_10

npm前端项目修改python版本 python修改script配置_npm前端项目修改python版本_11

随便写一行

npm前端项目修改python版本 python修改script配置_npm前端项目修改python版本_12


点run,启动ghidra,code browser,script manager,可以看到分类里有一个test,里面有刚写的脚本susutest。

npm前端项目修改python版本 python修改script配置_ghidra_13


运行:

npm前端项目修改python版本 python修改script配置_ghidra_14


到此开发和调试的环境已经搞定了。

下面讲一下如何调试

下断点,在python脚本对应的行,右键下断点

npm前端项目修改python版本 python修改script配置_ghidra_15


左上角选择Debug,然后点击debug,开始调试,会自动启动ghidra实例,需要注意运行前应当关闭所有已经在运行的ghidra实例。然后正常启动code browser,去脚本管理器中找到刚才下断点的脚本,并运行。等待一下,直到右侧变量窗口出现内容,说明程序已经断下来了,并且此时可以使用Eclipse的工具栏进行单步调试:

npm前端项目修改python版本 python修改script配置_ghidra_16

参考

A Guide to Ghidra Scripting Development for Malware ResearchersGhidra Blog - Online Courses - Intermediate scripting(推荐阅读)