0

読んでくれてありがとう。挿入されたDLLからWinsockから「send」でパケットを送信しようとしましたが、できませんでした。「recv」と「send」のフックに関する多くのガイドを見てきましたが、 「send」または「WSASend」と同じソケットを使用して、「send」を使用して同じソケットを使用する方法はありますか?、ソケットハンドルを取得する必要がありますか? ありがとう

4

2 に答える 2

0

ソケットハンドルを取得する必要がありますか?

はい、ソケットハンドルを取得できれば、問題が何であるかわかりません。挿入されたDLLは同じプロセス内で実行されているため、既存のハンドルを使用できます(ハンドル値を検出できる場合は、おそらくソケット関数の1つをフックして、フックされたアプリケーションが使用しているソケットハンドルを確認します)。

同じソケットを再度開いて、独自の新しいハンドルを取得することはおそらくできません。

于 2012-12-10T13:49:04.430 に答える
0

いくつかの理由が考えられます。私が考えるかもしれないそれらのいくつか:

  1. すでに閉じられているソケットに送信しようとしています。メイン アプリケーション アクティビティに対して send() 呼び出しを非同期的に実行している場合、送信しようとしている時点で、アプリケーションはすでにソケットを閉じている可能性があります。データの送信に使用しているソケットで send() または recv() 呼び出しのフック関数内で送信してみてください。
  2. 別のスレッドの同じソケットに別の send() 呼び出しがあります。
  3. バッファー長パラメーターが実際のバッファー長と一致していません (バッファー パラメーターを変更しただけで、元の呼び出しから長さパラメーターをそのままにしておくと発生する可能性があります)。

お役に立てれば。

于 2013-01-12T17:08:15.017 に答える