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()
はかなり簡単で、それを実行でき、別のプロセスから関数を呼び出すことさえできました。ただし、変数のアドレスを取得する (少なくとも読み取る) 方法がわかりません。
このプログラムを実行すると、他のプログラムがこのアプリケーションのイメージベースアドレスを取得し、そのアプリケーション内の変数を読み取ろうとするという考えです。