在IDA反汇编中填写C++接口方法名

逆向工程 艾达 C++ 虚表
2021-07-09 05:45:52

我有一个带有接口的 C++ 头文件(所有方法都是纯虚拟的类)。我还有一个二进制文件,它返回指向这些接口的指针。我在运行时调试并接收到这些接口实现的虚拟表地址。

有没有办法告诉IDA Pro vtable在某个地址,并给它头文件并让它标记vtable中的所有方法并相应地命名它们?有很多接口和很多方法。

我看到了这个:Static analysis of C++ binaries,但它没有回答自动命名的问题。

我正在使用免费软件版本 5.0。

1个回答

如果二进制文件本身编译了 RTTI 信息,那么您至少可以获得 vftables 的名称,并且在某种程度上可以获得类/结构层次结构。对于 Windows x86,您可以使用我的 IDA 插件“Class Informer”另请参阅igorsk 的Reversing Microsoft Visual C++ Part II: Classes, Methods and RTTI参考。

否则 AFAIK(并且非常了解该区域)我怀疑是否存在可以执行您想要的操作的插件。虽然 IDA 中存在结构,但 C++ 类不存在。C++ 不直接属于 IDA 的世界。这更多地属于特定语言的领域,是众多语言中的一种,而 IDA 则是关于汇编和字节码领域;除了 HexRays 反编译器插件,它在上面添加了 C/C++ 东西。

你确定你可以将实际的二进制地址与给定的 C++ 方法相关联,或者 vftable 等?

无论如何,您可能必须编写自己的插件和/或脚本来执行您想要的操作。