Ghidra反编译与编译器差异解析
1. Ghidra反编译的具体应用示例
在使用Ghidra的反编译窗口进行分析时,有几个具体的应用场景值得深入探讨。
1.1 非返回函数的处理
一般情况下,Ghidra默认函数调用会返回,并将函数调用视为基本块内的顺序流。然而,有些函数(如源代码中用 noreturn 关键字标记的函数,或恶意软件中以混淆跳转指令结尾的函数)不会返回,这可能导致Ghidra生成不准确的反汇编或反编译代码。Ghidra提供了三种处理非返回函数的方法:
- 已知非返回函数分析器 :Ghidra可以根据已知的非返回函数列表(如 exit 和 abort ),使用“Non - Returning Functions - Known”分析器来识别非返回函数。该分析器在自动分析中默认被选中,其工作方式很直接:如果函数名出现在列表中,就将该函数标记为非返回函数,并尽力纠正相关问题(如将关联的调用设置为非返回,查找可能需要修复的流程等)。
- 发现非返回函数分析器 :“Non - Returning Functions - Discovered”分析器会寻找可能表明函数不返回的线索(如调用后紧接着的数据或错误指令)。该分析器的行为主要由三个选项控制:
- 第一个选项允许自动创建分析书签(会显示在列表窗口的书签栏上)。
- 第二个选项允许指定一个阈值,根据一系列可能表明非返回函数的特征检查来确定是否将函数指定为非返回函数。
- 最后有一个复选框用于修复相关的流程损
超级会员免费看
订阅专栏 解锁全文
88

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



