0

フックを使用して別のプロセスの実行中のメモリにジャンプし、DLL インジェクションのようなものなしでジャンプして戻ることは可能ですか?

たとえば、プロセスAにプロシージャがfooあり、プロセスに(フックに使用される)同一のプロトタイプを持つBプロシージャがある場合、両方のプロセスが実行されていると仮定して、jmp toにフックすることは可能ですか?barfoofoobar

編集: これは Windows で行う必要があります。

4

2 に答える 2

2

定義上、プロセスはサンドボックスです。誤ってアドレス空間の外に出た場合でも、SIG_USR シグナルとして発生してキャッチされ、セグメンテーション違反として報告されます。

プロセス間の通信に使用できる共有メモリ -shmem、パイプ、ソケットなどのプロセス間通信メカニズムがあると述べました。

編集:リモートメソッド呼び出しを提供するCORBAなど、RPC(リモートプロシージャコール)メカニズムも利用できます。

于 2012-05-19T10:09:19.960 に答える
1

Windows の各プロセス (Unix や他の最新の OS の大部分と同様) には、通常は異なる物理アドレスにマップされる独自の仮想メモリ空​​間があります。したがって、別のプロセスのアドレス空間に DLL を挿入することが、そのプロセスで何かをフックする唯一の方法です。一方、そのプロセスに DLL があると、そこでできることはたくさんあります。独自のスレッドを生成し、Windows メッセージを使用して親プロセスと通信します (Windows で最も簡単な通信方法の 1 つとして)。

于 2012-05-19T11:08:57.213 に答える