Ghidra反编译器:功能与应用详解
1. 反编译概述
通常我们可能会认为反编译器窗口的内容源自列表窗口,但实际上二者是独立生成的,这也解释了为何它们有时会存在差异,在确定真实情况时,需要结合二者进行评估。Ghidra反编译器的主要功能是将机器语言指令转换为p代码,再将p代码转换为C代码并显示在反编译器窗口中。
简化来看,反编译过程包含三个不同阶段:
- 第一阶段 :反编译器使用SLEIGH规范文件创建p代码草案,并推导相关的基本块和流程。
- 第二阶段 :简化阶段,消除不可达代码等无用内容,然后根据这些更改调整和优化控制流。
- 收尾阶段 :添加最后的修饰,进行一些最终检查,并通过美化打印算法处理最终结果,再显示在反编译器窗口中。
主要要点如下:
- 反编译器是一个分析器。
- 从二进制文件开始工作并生成p代码。
- 将p代码转换为C代码。
- C代码和相关消息显示在反编译器窗口中。
2. 分析选项
在自动分析过程中,有几个与反编译器窗口相关的分析器。反编译器分析选项可通过“Edit4Tool Options”菜单进行管理。下面介绍两个选项:
2.1 消除不可达代码
该选项可将不可达代码从反编译器列表中排除。例如,以下C函数有两个永远无法满足的条件,对应的条件块即为不可达代码:
int demo_unreachable(volatile i
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



