返回介绍

第 9 章 交叉引用与绘图功能

发布于 2024-10-11 21:05:43 字数 798 浏览 0 评论 0 收藏 0

在对二进制文件进行逆向工程时,人们提出的一些常见问题包括:“这个函数是从什么地方调用的”和“哪些函数访问了这个数据”。这些及其他类似的问题其实是对程序中各种资源的引用进行分类。有两个例子可说明这类问题的用处。

假设你已经确定了一个函数的位置,该函数包含一个栈分配的可溢出的缓冲区,你可对此加以利用。由于这个函数可能深深隐藏在一个复杂的应用程序中,因此,下一步你需要确定到底如何访问该函数。除非你能够执行这个函数,否则它就对你毫无用处。我们会提出这样一个问题:哪些函数会调用这个易受攻击的函数呢?而数据是由哪些函数传递给易受攻击的函数的呢。在你回溯潜在的调用链,查找那个有助于你利用缓冲区溢出的函数调用时,你必须继续上述推理过程。

另外,如果一个二进制文件包含大量 ASCII 字符串,你会觉得其中至少有一个字符串值得怀疑,如“Executing Denial of Service attack! ”(拒绝服务攻击)。存在这个字符串表明这个二进制文件确实会拒绝服务攻击吗?不是,它只是表示该二进制文件碰巧包含上述特殊的 ASCII 序列。你可能会据此推断,这条消息可能会在实施攻击之前以某种方式显示出来。但是,你需要查找相关代码,以证实自己的怀疑。那么,“程序从什么地方引用这个字符串呢?”这个问题将有助于你迅速跟踪到利用该字符串的程序位置,进而确定具体的拒绝服务攻击代码。

通过强大的交叉引用功能,IDA 将帮助你回答这些问题。IDA 提供大量显示和访问交叉引用数据的机制,包括图形生成功能,它以更加直观的方式显示代码与数据之间的关系。在本章中,我们将讨论 IDA 提供的各种交叉引用信息和访问交叉引用数据的工具,以及解释这些数据的方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文