外部参照是什么意思?

逆向工程 部件 x86 雷达2 称呼 英特尔
2021-07-08 21:25:48

我一直在通过使用存储在 Intel 80386 机器上的radare2 分析二进制文件来学习x86 汇编语言。当我在二进制文件上分析函数时,我注意到从文件中的各个地址重复调用“XREF”:

在此处输入图片说明

这是什么意思?我在网上查找了“外部参照”,但找不到任何明确的答案。

2个回答

交叉引用(或简称为 XREF)是反汇编程序的一项功能,可向您显示特定函数和对象的调用位置或特定函数使用的函数和对象。我们可以通过将其关联为 XREF-To 和 XREF-From 来简化它。引用的可以是数据或代码。

当我们想要准确地确定从何处调用函数或当前函数调用哪些函数时,外部参照是一种宝贵的资源。正如您所理解的,这非常有用,因此我们不必为帧指针迭代堆栈以查找调用当前函数的函数,或者手动搜索特定地址的 CALL。

从您的屏幕截图中可以看出,radare2 提到特定地址是从(“XREF from”)代码中的几个不同位置(地址)引用的。使用radare 的ax?子命令,您可以轻松查看XREFS。例如,axt 0xfa1afe1将显示你的外部参照牛逼Ò0xfa1afe1axf 0xfa1afe1会告诉你外部参照˚F ROM 0xfa1afe1

这意味着交叉引用它向您展示了这部分代码是从另一个代码中调用或引用的(如数据)。