我试图用 Ida 打开 CPP 二进制文件。大多数代码分析得很好。
问题是有很多 vtables(Ida 无法将它们识别为 vtables),我需要手动访问它们并按下O(offset),这样 Ida 将分析 vtable 中的所有字段指向它们的函数。
另外,Vtable中的第一个函数是constructor,在那个构造函数中我们可以看到这个vtable继承的vtable。Ida 没有分析“父亲”虚表。
我该如何解决这个问题/或者是否有一个脚本也可以对 CPP Aem 二进制文件执行此操作
我试图用 Ida 打开 CPP 二进制文件。大多数代码分析得很好。
问题是有很多 vtables(Ida 无法将它们识别为 vtables),我需要手动访问它们并按下O(offset),这样 Ida 将分析 vtable 中的所有字段指向它们的函数。
另外,Vtable中的第一个函数是constructor,在那个构造函数中我们可以看到这个vtable继承的vtable。Ida 没有分析“父亲”虚表。
我该如何解决这个问题/或者是否有一个脚本也可以对 CPP Aem 二进制文件执行此操作
正如您在评论中提到的,您需要构建类层次结构或查找 vtables。以下是我知道将帮助您实现您想要的一些项目。
classinformer - https://sourceforge.net/projects/classinformer/
Hexpytools - https://github.com/igogo-x86/HexRaysPyTools
也看看@这个优秀的出版物,但他们的代码库不是开源的 - https://dl.acm.org/doi/pdf/10.1145/3321705.3329833(上次我问他们时,他们告诉我他们计划这样做不久)
他们的论文很有趣,因为它解释了如何恢复这种结构。通常,您需要 vtable 条目、vtable 结构、类构造函数和析构函数分析以及对象流分析来构建所需的层次结构。