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



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

#1 楼

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

XREF是宝贵的资源,当我们想确切地从何处调用函数或当前函数调用什么函数时。如您所知,这可能非常有用,因此我们不必遍历框架指针的堆栈来查找调用当前函数的函数,也可以手动搜索指向特定地址的CALL。

如您的屏幕快照所示,radare2提到从代码中的几个不同位置(地址)引用(“ XREF来源”)的特定地址。使用radare的ax?子命令,您可以轻松查看XREFS。例如,axt 0xfa1afe1将向您显示对0xfa1afe1的外部参照,而axf 0xfa1afe1将向您显示来自0xfa1afe1的外部参照。

#2 楼

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