Привет, сетевой друг!
Сегодня поговорим об инструменте wsock-trace
🟣Что это: wsock-trace - это tracing-библиотека для Winsock. Она встраивается между приложением и ws2_32.dll и логирует все сетевые вызовы: socket(), connect(), send(), recv(), select(), AcceptEx() и т.д. По сути, это strace, но для Windows-сокетов.
🟣Чем реально полезен: вы видите не просто факт сетевого вызова, а кто именно его вызвал - файл, строку кода, имя функции, смещение в бинаре. Плюс точные таймстемпы, параметры вызовов и коды ошибок Winsock. Отлично заходит, когда приложение «что-то делает с сетью», но Wireshark не даёт ответа почему.
🟣Как работает: приложение линкуется не с ws2_32.lib, а с wsock_trace.lib. DLL перехватывает вызовы Winsock, логирует вход/выход функций и через PDB-символы восстанавливает стек вызовов. В итоге видно, какая строка кода инициировала сетевую активность и с каким результатом.
🟣Фишки в реальной жизни: цветной вывод, миллисекундные таймстемпы через QueryPerformanceCounter, трейс Microsoft-специфичных функций (ConnectEx, AcceptEx), GeoIP/ASN информация по IP, детект попаданий в Spamhaus DROP-листы, логирование событий Windows Filtering Platform и даже искусственное замедление send/recv для тестов гонок и таймингов.
🟣Быстрый старт: Собирается под MSVC / clang-cl:
cd src
nmake -f makefile.vc6
Дальше линкуете приложение с нужной библиотекой:
wsock_trace-x64.lib // для x64
wsock_trace-x86.lib // для x86
И запускаете бинарь как обычно, все Winsock-вызовы сразу начинают логироваться.
Серверная Админа | #Инструмент
