Ghidra:浏览与注释二进制程序
导入二进制程序,浏览反汇编代码和反编译代码,重命名变量并添加注释。
Ghidra:浏览与注释二进制程序 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。
什么是 Ghidra?
Ghidra 是由 NSA 开发、于 2019 年公开发布的免费开源逆向工程工具。它支持反汇编、反编译、脚本编写以及在 Linux、macOS 和 Windows 上进行协作分析。
加载二进制文件
在 Ghidra 中打开二进制文件:
- 创建新项目
- 导入文件(文件 → 导入文件)
- 运行自动分析 — 请等待其完成(识别函数、字符串和数据类型)
- CodeBrowser 打开,显示反汇编视图和反编译器视图
Ghidra 界面
Ghidra 的主要窗口:
- 程序树 — 各个节(.text、.data、.plt)
- 符号树 — 函数、标签、导入项和导出项
- 列表 — 反汇编视图
- 反编译器 — 伪 C 代码重建结果
- 函数 — 所有已识别函数的列表
导航至入口点
从程序入口点或 main() 开始分析:
- 按
G执行“转到”,跳转到某个地址或符号 - 在符号树中搜索“main”
- 双击任意函数即可导航到该函数
阅读反编译器输出
Ghidra 的反编译器会生成伪 C 代码,比汇编更易于阅读。结果不会完全准确 — 变量名通常是通用名称(param_1、local_10),控制流也可能看起来不太自然 — 但它能够清晰地揭示程序逻辑,使您足以理解代码的作用。
重命名变量和函数
添加注释可以提高可读性:
- 右键单击变量 → 重命名(或按
L) - 右键单击函数 → 重命名函数
- 使用
;(行尾注释)或/*...*/样式添加注释
随着您对二进制文件的理解不断加深,重命名会逐步建立上下文。
识别字符串
字符串对于理解程序用途非常有价值:
- 窗口 → 已定义字符串会显示所有字符串常量
- 单击字符串即可跳转到代码中使用该字符串的位置
- 错误消息、文件路径、URL 和注册表项都能揭示程序功能
交叉引用
交叉引用显示某个函数或变量在何处被调用或使用。在任意符号上按 X 可以查看所有引用。这对于查找用户输入进入函数的位置,或定位安全检查发生的位置至关重要。
使用 Ghidra 编写脚本
Ghidra 提供 Python/Java 脚本应用程序编程接口:
# Python script to find all calls to strcpy:
from ghidra.program.model.symbol import RefType
for ref in currentProgram.getReferenceManager().getReferencesTo(toAddr(0x401234)):
print(ref.getFromAddress())使用 Ghidra 分析恶意软件
进行恶意软件分析时:
- 识别反分析技巧(反调试、代码混淆)
- 查找网络通信函数(套接字、连接、WinInet)
- 定位加密函数(查找 AES S 盒常量:0x63、0x7c……)
- 从解密后的字符串中提取 C2 URL
Ghidra 与 IDA Pro
Ghidra 与 IDA Pro:
- Ghidra:免费、开源、支持脚本编写,并且反编译器性能良好
- IDA Pro:行业标准,分析速度更快,插件生态更完善,但价格昂贵($$$)
- 对于大多数任务,Ghidra 已经完全够用;专业恶意软件分析实验室则可使用 IDA
快速检查:Ghidra
Ghidra 的哪个功能可以显示二进制文件中调用或引用特定函数或变量的所有位置?
课程回顾
Ghidra 是 NSA 开发的免费逆向工程工具,提供反汇编、反编译和脚本编写功能。主要工作流程包括:加载二进制文件、运行自动分析、导航到 main()、使用反编译器理解逻辑、重命名变量,以及使用交叉引用追踪数据流并搜索字符串来获取上下文。通过不断添加注释,可以逐步加深理解。脚本可以自动执行重复的分析任务。
常见问题解答
「Ghidra:浏览与注释二进制程序」课时是免费的吗?
是的 — 「Ghidra:浏览与注释二进制程序」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。
「Ghidra:浏览与注释二进制程序」这节课中我会学到什么?
导入二进制程序,浏览反汇编代码和反编译代码,重命名变量并添加注释。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cyber Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「Ghidra:浏览与注释二进制程序」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cyber Security Academy 课中编写并运行代码吗?
能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Ghidra:浏览与注释二进制程序
- 逆向分析者必备的 x86/x64 汇编
- 使用 GDB 与 pwndbg 进行动态分析
- 去混淆与反分析技巧