【发布时间】:2020-11-06 09:08:41
【问题描述】:
当我反编译一个函数时,我得到了以下代码
((void(__thiscall**)(int))(*v4 + 4))(v4);
*v4 在这种情况下是一个虚拟表。实在是分不出来(谁先解决,具体是什么意思)。
请您帮助我逐步解决此问题,以便我了解其工作原理。
【问题讨论】:
-
看起来 v4 可能是“this”指针,它取消引用以获取 vtable,将其索引以获取方法,将结果转换为函数调用,然后传递“this”到那个函数(这将是一个成员函数)。
-
When I threw this into Visual Studio I was surprised that it got accepted- 你是什么意思?该语句不会自行编译。也许您可以显示您将其复制到 VS 项目中的代码。 -
*之后的__thiscall对我来说看起来像是语法错误。 -
给定
+4,并假设是 32 位程序,它可能是该类中第二个声明的虚拟方法被调用。 -
@selbie 你说得对,我现在已经编辑了那部分,也谢谢大家我现在明白了
标签: c++ assembly decompiler