我正在对旧的 C++ 代码进行逆向工程,但我发现了一些我无法理解如何从普通 C++ 代码中实现的东西。来自 DLL 的函数签名是一个可以恢复为public: void __thiscall MyClass::MyClass(int)
.
从 MS 文档中,__thiscall
函数具有this
使用 ECX 寄存器传递的非静态方法的成员。嗯,这个特殊的函数正确使用了ECX寄存器传递,而且,从反汇编代码来看,第一个参数不是int
参数,而是指向对象的指针。
这是我从 DLL 公共名称中可以看到的:
void __thiscall MyClass::MyClass(int);
main() {
MyClass *pmc;
MyClass *pmc2;
pmc = new MyClass(pmc2,0);
}
因此,在这种情况下,构造函数(以及其他方法)似乎被定义为:
void __thiscall MyClass:MyClass(MyClass *arg0, int arg1)
有什么想法可以完成这样的事情吗?