Я предполагаю, что вы не хотите изобретать велосипед, так что приобретите библиотеку перехвата, такую как MinHook https://github.com/TsudaKageyu/minhook/ или Microsoft Detours https://www.microsoft.com/en-us/research/project/detours/ небольшой пример с minhook
int YourDetourFuncHere(
SOCKET s,
const char *buf,
int len,
int flags
){
// your code here.
return RealFunction(s, buf, len, flags);
}
void hookex(){
MH_Initialize();
MH_CreateHook("ws2_32.dll", "send", YourDetourFuncHere, &RealFunction);
MH_EnableHook(MH_ALL_HOOKS);
}
Этоэто просто своего рода псевдокод, поскольку вы не должны копировать и вставлять в первую очередь;) и вам следует добавить дополнительную проверку ошибок в соответствии с документацией libs.
Если вы хотите видеть весь трафик в глобальном масштабе, используйте NDISдрайвер и просто отправить данные в режим пользователя.У вас может быть поток в пользовательском режиме, который будет продолжать вызывать ReadFile () и устанавливать IRP_MJ_READ на стороне драйвера и просто получать пакетные данные из драйвера.Также для других браузеров это может варьироваться.Например, Firefox может быть PR_Write, а другие такие программы или браузеры могут использовать разные протоколы и т. Д., Поэтому в зависимости от вашей цели вы должны искать, где вы хотите разместить свой хук.