NektraのDeviareを使用して、winsockのsendメソッド呼び出しをフックします。私の考えは、元のアプリケーションと同じソケットを通してメッセージを送信することを学ぶことです。だから、私がやっていることは、最初にsend messageを検出したときに、ソケットID(send関数の最初の引数)を保存して、後で使用できるようにすることです。ソケットで文字列を送信する(簡単ではありません)
は、だからここに私のコードです:
uint socket = 0;
[DllImport("Ws2_32.dll")]
private static extern int send(uint socket, string buf, int len, int flags);
void _proxy_OnFunctionCalled(DeviareTools.IProcess proc, DeviareParams.ICallInfo callInfo, Deviare.IRemoteCall rCall)
{
socket = (uint)callInfo.Params.get_Item(0).Value;
}
以降
int ret = send(socket, "ABC", 3, 0);
MessageBox.Show(ret.ToString());
この最後のメッセージボックスには常にアップpopingさ-1。それはなぜでしょうか?
おかげ
編集:WSAGetLastError()を呼び出すことがMSDNに表示されていないようだと、私は、それが何を意味するのか分からない2を返します。
これは現在、1564という値があります。 –
さて、ソケットの値を123に設定すると、同じエラーが表示されます。奇妙な。だから、おそらくソケットIDとは何か関係がありません。私は理由を知りません。 –