IDA Pro 的点对点分析

逆向工程 艾达 指针 调用图 ida插件
2021-07-05 10:34:43

我知道这个论坛上的很多用户都是 IDA Pro 的专家(开发者)。所以我试探性地询问一下IDA Pro的point-to analysis背后的一些高层思路。

根据我的个人经验(我一直在大量使用 IDA Pro 6.95 进行二进制代码研究),在 IDA Pro 中实现的点到分析既不健全也不完整。我设想使用一些启发式方法来推断代码和数据指针中设置的值。

所以这是我的问题:

  1. 有人能解释一下 IDA-Pro 中的点对点算法吗?我知道 IDA-Pro 是一款商业软件,因此非常感谢高水平的想法。

  2. 考虑到我们有大量的间接调用需要插入,使用 IDA Pro 构建调用图的最佳实践是什么。

分析平台可以是 ARM 上的 ELF 二进制文件,与 x86 相比,这似乎相对容易一些。

1个回答

指针分析主题是理论静态分析的重要组成部分。许多文章和学术出版物都写过关于指针分析的文章,这是一个被大量研究的领域。

除了理论研究之外,即使是熟练和训练有素的逆向工程师也经常难以解决的问题。在某些情况下,几乎不可能在不执行或模拟相关代码的情况下检索指针。

因此,对于IDA Pro来说,如你所说,提供一个“完善而完整”的解决方案,并非易事。这实际上并不是反汇编程序的任务,这一事实突出了这一点。

至于你的具体问题:

  1. 有人能解释一下 IDA-Pro 中的点对点算法吗?我知道 IDA-Pro 是一款商业软件,因此非常感谢高水平的想法。

据我所知,IDA 的指针分析非常基础。注册调用只有在它们被直接分配并且没有很多污点分析时才会被解决。重要的是要记住 IDA 不是二进制静态分析工具,IDA 是反汇编器(和反编译器)。污点分析、约束求解、调用图分析等通常通过专门为这些目的设计的工具来完成。话虽如此,IDA 确实努力包含启发式方法来帮助处理这类事情。

  1. 考虑到我们有大量的间接调用需要插入,使用 IDA Pro 构建调用图的最佳实践是什么。

因此,如果您主要关注调用目标难以解决或需要考虑大量约束的情况,那么 IDA 不是构建调用图的最佳工具。

有更好的静态二进制分析工具,以及关于 RE.SO 上有关该主题的几个问题。我个人最喜欢的可能是angr

我建议您在继续之前花时间研究理论主题和可用的工具和方法。