2012-01-01 14 views
2

他のプロセスのメモリから読み書きできるようにしたい。私は関数Readprocessmemory()WriteProcessmemory()Kernel32.dllから呼び、私はGetProcessByName()関数を使ってプロセスを探しました。これは成功します。他のプロセスから読み書きする

私はreadprocessmemory()機能を取るための例を見て、私はkernel32.dllからそれを呼び出した後、それを宣言し、私はそれがどのように動作するか理解していない - どのように私は別のプロセスから読み取る機能を使用していますか?私は例を感謝します。

+1

私はC#については分かりませんが、他のユーザーがあなたが言及した例へのリンクを感謝するかもしれません - "kernel32.dllから呼び出した後に宣言する"ということははっきりしません。 – Dan

+1

[このプロジェクトのソースを読む](http://www.codeproject.com/KB/cs/sojaner_memory_scanner.aspx) –

+0

ReadProcessMemory関数について詳しく説明しているMSDNの記事は次のとおりです。[link](http://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85)asp.aspx) – GregoryComer

答えて

1

メモリを別のプロセスに読み書きするためには、kernel32が提供するReadProcessMemory関数とWriteProcessMemory関数を使用する必要があります。 C#を使用している場合は、これらの関数を現在のプロセスにインポートするためにPInvokeを使用する必要があります。

は、より一般的に、何をする必要があると、このです:

  • が、それはあなたがプロセスへのハンドルを取得するために
  • コールOpenProcessを()/読み出しを注入したいことが何であるかを処理するワークアウト。あなたはGENERIC_READ | GENERIC_WRITEをこのフラグに設定すると、NULLでないことを確認する必要があるHPROCESSが戻されます。
  • 外部プロセスのどこから読み込みたいかを決めます(これは外部プロセスポインタです)。また、読み込むバイト数を決定する必要があります。
  • 読み取りの結果を保持するために、現在のプロセスに多くのバイトを割り当てます。
  • あなたがオープンしたHPROCESSを渡すReadProcessMemory、他のプロセスから読み込む外部プロセスポインタ、ローカルバッファへのポインタ、外部プロセスからローカルに読み込むバイト数を呼び出しますバッファ。

これでローカルバッファを見ることができ、かつては外来プロセスにあったデータが表示され、人生は良好になります。

関連する問題