1

Windows では、DLL インジェクションを使用して別のプロセスに入ったとしましょう。また、注入したプロセスのメモリのスクリーンキャプチャをいくつか実行し、引き出したいデータの場所を知っています。特定の値を含む 0xaaaaaaaa の他のプロセスにデータがあるとします。注入アプリで使用できるように、そのプロセスからこの値を取得するにはどうすればよいですか? 私はプロセスに注入されているので、memcpy のようなものを使用できますか?

memcpy(value, 0xaaaaaaaa, 10);

おそらくこれよりももっと複雑だと思いますか?

編集: 以下の応答では、既存のアプリケーションからデータを取得するためではなく、別のアプリケーションにデータを送信するために WM_COPYDATA がどのように役立つかわかりません。

4

4 に答える 4

3

ReadProcessMemory関数を使用できるはずです。

Windows で別のプロセスのメモリを変更する Perl、Python、または Ruby プログラムを作成する方法も参照してください。

于 2009-11-20T19:24:05.533 に答える
3

Windows では、すべてのプロセスが独自のメモリをアドレス指定します。つまり、2 つの異なるプロセスのメモリを指す 2 つのポインターを持つ memcpy のようなことはできません。

プロセス間通信の任意のオプションを検討できます: メモリ マップ ファイル、ソケット、名前付きパイプ、イベント ウィンドウ メッセージ。

IPCの詳細はこちら

于 2009-11-20T15:17:48.543 に答える
1

WM_COPYDATAを試して、それに関連するMSDNのヘルプを利用してください。

于 2009-11-20T15:23:03.460 に答える
1

Windows では、次の IPC メカニズムがサポートされています。

クリップボード
COM
データ コピー
DDE
ファイル マッピング
メールスロット
パイプ
RPC
Windows ソケット

詳細はこちらプロセス間通信

あなたの場合、WM_COPYDATAメッセージを使用します

于 2009-11-20T15:27:36.883 に答える