0

別のプログラムの接続関数呼び出しをフックし、接続先の IP を読み取る C# でアプリケーションを作成しています。(私はそれがIPv4であることを知っています)

現在、関数呼び出しをフック、傍受、転送し、変数を取得しますが、winsock での接続は 2 番目の引数として sockaddr* 変数で呼び出されるため、IP アドレスを取得するには、これを sockaddr_in にキャストする必要があります。(情報を見つけることができなかった sa_data フィールドから IP を取得する方法がない限り。)

これは私が立ち往生しているところです。InteropSignatureToolkit を使用して構造体の C# コードを生成しましたが (生成コード: http://pastebin.com/twvGw030 )、sockaddr 構造体を sockaddr_in にキャストする方法がよくわかりません。C++ ではこれは非常に簡単ですが、C# で行う方法がわかりません。

これを読んでくれてありがとう。あなたが私を助けてくれることを願っています。:)

4

1 に答える 1

3

p / invoke宣言でを使用するIntPtrと、を使用できますMarshal.PtrToStructure。最初に使用sockaddrして調べてから、より具体的なタイプでもう一度sa_family呼び出します。Marshal.PtrToStructure

于 2012-07-31T02:24:43.760 に答える