2016-08-24 18 views
1

20番のプロセスのアドレスを読み込もうとしています。このアドレスはdllベースのオフセット+ 10のオフセットの位置にあります。C++はポインタ+オフセットでメモリアドレスを読み取る

ReadProcessMemory(phandle, (void*)address, &number, sizeof(number), 0); 

を使用して特定のアドレスを読み取る。私の質問は、 "57B86F68" + 10オフセットにある住所を正しく検索する方法です。

+0

無効にしない限り、おそらくASLRに対処する必要があります。 https://en.wikipedia.org/wiki/Address_space_layout_randomization – drescherjm

+0

これはちょっと混乱します。 '0x57b86f68 + 10'のアドレスを探しているのですか、その場所に保存されているアドレス(または他の種類の値)を探していますか?いずれにしても、*何でも検索する必要はありません。 – molbdnilo

+0

@drescherjm、私は、私が知っている限り問題ではないので、コードを介してベースアドレスを取得することを確認しました。 – Jack

答えて

1

あなたphandleがPROCESS_VM_READアクセス許可されたとプロセスハンドルである場合は、ハンドルからデータを読み取ることができます:PROCESS_VM_READがあるはず、プロセスのための適切なアクセス権があなたのOpenProcessフラグをチェック扱う取得するには

ReadProcessMemory(phandle, (void*)(0x57B86F68 + 0x10), &number, sizeof(number), 0); 

まだ動作しない場合は、はるかに複雑です。 virtual address to physical addressを翻訳してから、kernel mode経由でメモリに直接アクセスする必要があります。

関連する問題