我正在对 Windows 可执行文件进行逆向工程。我从注入可执行文件(不同的线程,自己的堆栈)的一些代码中找到了一个我想使用的类。给定方法地址和成员变量结构,我将如何声明这样一个类?
例如,假设我找到了一个名为 foo 的类,它的构造函数 @ 0x4012D30 和一个函数 doTheMario @ 40125D4。我也知道它包含三个 DWORD 的私人数据。由于这两种方法都是 _thiscalls,我在我的代码中声明了一个这样的类:
class GuessedFoo {
private:
int bar;
char *cafebabe;
float deadbeef;
public:
GuessedFoo(int a, int b);
void doTheMario();
};
现在,这是一个完美的花花公子类,但是现在有什么方法可以让编译器/链接器将类方法绑定到我前面提到的两个地址?当然,我可以编写一个 asm 包装器,为我需要使用的每个方法将 stdcall 转换为 thiscall,然后使用结构而不是类,但必须有更好的方法。
我目前使用 gcc/g++,但我可以切换到 VC++(因为 gcc 的内联 asm 无论如何都让我头疼)。