C++ 拆解时识别vtables

C++ 拆解时识别vtables,c++,x86,reverse-engineering,disassembly,C++,X86,Reverse Engineering,Disassembly,在分解时,是否有识别vtable的好策略?现在,我正在使用蛮力扫描.rdata部分,查看指向代码部分的字节组合。然后我做了进一步的检查,看看它是否看起来像一个函数序言,但总的来说,这种方法似乎效率不高,而且容易出现很多误报 我想另一种方法是反过来,在代码部分中查找vtable引用,然后在它指向.rdata的位置开始解析,但同样,它也有问题 所以我很好奇,是否有比暴力检查更有效的方法。要回答这个问题,需要具体说明这里使用的编译器。AFVK的位置不是由C++标准定义的,而是编译器实现依赖的。我意识到

在分解时,是否有识别vtable的好策略?现在,我正在使用蛮力扫描.rdata部分,查看指向代码部分的字节组合。然后我做了进一步的检查,看看它是否看起来像一个函数序言,但总的来说,这种方法似乎效率不高,而且容易出现很多误报

我想另一种方法是反过来,在代码部分中查找vtable引用,然后在它指向.rdata的位置开始解析,但同样,它也有问题


所以我很好奇,是否有比暴力检查更有效的方法。

要回答这个问题,需要具体说明这里使用的编译器。AFVK的位置不是由C++标准定义的,而是编译器实现依赖的。我意识到它依赖于编译器,但我在寻找一个通用的解决方案。虽然我认为如果编译器不受支持,也可以使用通用回退来开发多个特定于编译器的解决方案。您的二进制文件是否已剥离?不同类型的vTable可能有符号(可能是非全局的)。您是否有一个符号用于构造所需类型的对象的函数?(他们需要将指向vtable的指针存储到内存中)。但是最后一部分可能很难实现自动化。要回答这个问题,需要具体说明这里使用的编译器。AFVK的位置不是由C++标准定义的,而是编译器实现依赖的。我意识到它依赖于编译器,但我在寻找一个通用的解决方案。虽然我认为如果编译器不受支持,也可以使用通用回退来开发多个特定于编译器的解决方案。您的二进制文件是否已剥离?不同类型的vTable可能有符号(可能是非全局的)。您是否有一个符号用于构造所需类型的对象的函数?(他们需要将指向vtable的指针存储到内存中)。但最后一部分可能很难实现自动化。