2009-07-10 123 views
2

私のアプリケーションでReadProcessMemory()とWriteProcessMemory()の両方を使用しようとしましたが、どちらの場合でも1つの結果しか得られません - ReadProcessMemoryまたはWriteProcessMemory要求の一部のみが完了しました。WriteProcessMemory/ReadProcessMemoryが失敗する

以前に誰かがこのエラーコードを満たしましたか?私はVista SP2を使用している、私はadmistratorとして実行しようとしたが、私はそのerorcodeを取得するまで。

+0

あなたが使用しているコード(ReadProcessMemoryとWriteProcessMemoryの呼び出し)を投稿できますか? – Gerald

+0

デルファイですが、私はVirtualProtectExを使用していません.C/DelphiでVirtualProtectExの例だけが必要です。 –

答えて

4

VirtualProtectExを呼び出して、読み書きするメモリに正しい保護レベルを設定していることを確認してください。

はそれについて考えた後、それはおそらく、ほとんどのメモリは(C++で)アクセスが有効になって読みましたが、保護レベルを設定するには、このような何かをするので問題

(なしエラーチェックだけランダムメモリを使用していないのですあなたが考えているはずです)

char buffer[256]; 
DWORD oldProtect = 0; 
DWORD numRead = 0; 
VirtualProtectEx(hProc, (LPVOID)0x77810F34, 256, PAGE_EXECUTE_READWRITE, &oldProtect); 
ReadProcessMemory(hProc, (LPVOID)0x77810F34, buffer, 256, &numRead); 
VirtualProtectEx(hProc, (LPVOID)0x77810F34, 256, oldProtect, NULL); //restore the original protection when you're done 
+0

すべてのアドレスで呼び出す必要がありますか、それともプロセスメモリ全体に対して呼び出すことはできますか?あなたは、例を示してくれますか? –

+0

プロセスメモリ全体に対して呼び出そうとすると失敗する可能性が高いので、アクセスしたいメモリだけを呼び出してください。 – Gerald

+0

しかし、スロットの1つに有効な引数を渡していない可能性があります。そのため、問題がなければ、コードがDelphiにあっても投稿することをお勧めします。 – Gerald

関連する問題