0
私はrecv()関数をフックしようとしていますが、それは完全に動作します。ここには表示されていませんが、フックされた機能は、受信した内容をコンソールに出力します。DetourRemoveを正しく使うには?
今、私はkeypressでこの機能を解除しようとしていますが、新しい受信パケットがまだコンソールに出力されているので機能しない可能性があります。私はDetourRemoveを動作させるために切り替えや変更を試みましたが、誰かが助けることができれば、私は感謝しています。基本コードは下にあります。
int(__stdcall *recv_orig)(SOCKET s, char *buf, int len, int flags);
int __stdcall recv_hook(SOCKET s, char *buf, int len, int flags)
{
return recv_orig(s, buf, len, flags);
}
///DETOUR
recv_orig = (int(__stdcall *)(SOCKET s, char *buf, int len, int flags))DetourFunction(reinterpret_cast<BYTE*>(GetProcAddress(GetModuleHandleW(L"Ws2_32.dll"), "recv")), reinterpret_cast<BYTE*>(recv_hook));
///REMOVE
DetourRemove(reinterpret_cast<BYTE*>(GetProcAddress(GetModuleHandleW(L"Ws2_32.dll"), "recv")), reinterpret_cast<BYTE*>(recv_hook));
'DetourRemove'の最初の引数として' recv_orig'を試しましたか? –
いいえ、私は試してみます – SoLux
これを試した後、整数のすべてが16進数に変換され、ここで何が起こっているのですか?これは意味がありません – SoLux