我的 Win32 应用程序有以下代码:
class Foo {
public:
string mystring;
__declspec(dllexport) void foo();
};
void Foo::foo(){
printf("foo called");
}
int _tmain(int argc, _TCHAR* argv[])
{
Foo foo;
foo.mystring = "all your base are belong to us";
return 0;
}
如果我知道内存中有这个 Win32 的图像基地址:
- 鉴于我有图像基地址,我怎样才能获得
Foo
类实例偏移量 - 鉴于我在内存中有win32应用程序的图像基地址,如何获取变量的偏移地址
mystring
- 获取函数的函数地址
foo()
相当容易,我能够做到这一点,甚至可以从另一个进程调用该函数。但是,我不确定如何获取(至少读取)变量的地址。
这个想法是我将执行这个程序,然后其他一些程序获取这个应用程序的图像基地址,然后尝试读取所述应用程序内的变量。