如何在 IDA 中获取类成员变量的外部参照?

逆向工程 艾达 反编译 聚乙烯
2021-07-04 04:05:36

我正在对 Windows PE 进行反编译(在 PDB 中有完整的调试符号),我正在使用 IDA 来帮助它。

我想知道如何获取对给定类成员变量的所有引用的列表。当我在反编译器窗口中的类成员变量名称中按“X”时,它只在被反编译的实际函数中显示外部参照。我想查看所有函数中的引用。这甚至可能不编写脚本吗?

2个回答

另一个答案是错误的;这是完全有可能的(假设 IDB 已经具有相关结构的类型,并且该类型已应用于 Hex-Rays 中的参数/变量)。

在 IDA 7.4 及更高版本(我认为;可能是 7.3)中,右键单击该变量并按“全局跳转到外部参照”,如下所示:

全局跳转到外部参照

你会得到一个包含所有全局 x-refs 的弹出窗口,如下所示:

全局交叉引用

这是基于缓存,所以第一次执行时,您需要右键单击并按“刷新”,如上图所示(对于大型数据库,这将需要一段时间,但完全值得——这个是我在 Hex-Rays 中最常用的功能之一)。

这是不可能的。您必须恢复类实例结构,然后传递所有类方法并在使用它的地方应用类结构。然后,您可以查看类的创建位置并跟踪其所有实例的使用位置,并确保您找到了类的公共成员的所有访问点。然后转到结构窗口并查看所需成员的所有外部参照。