Всем привет есть функция в mswsock.dll называется WSPStartup в ней есть код загрузки ссылки на таблицу каллбеков (хочу похукать) так вот я распотрошил три версии везде смещение этого кода разное хотел прицепиться за значение опкода (mov esi,imm32) но например в хп надо брать втрой по счету встретившийся опкод а в висте и семерке первый как то не универсально может вбить в зависимости от весии системы смещения да и все ? или может есть хитрый способ поиска ? 5.1 (xp) WSPStartup + 117 mov esi, offset off_71A67260 6.0 (vista) WSPStartup + ED mov esi, offset off_6C9753D8 6.1 (seven) WSPStartup + 10F mov esi, offset off_6C8B6440 [update] впринципе нашел решение в этой теме http://wasm.ru/forum/viewtopic.php?id=33357&p=1 там за нужным mov esi,imm32 идет всегда rep movsd если его тоже включить в сигнатуру поиска то можно однозначно определить
WSP-стабы можно откатывать, тем самым сделать высокоуровневый фильтр для WSA. Для этого необходимо перечислить все WSA функции, описать их графом на NL = 2 и для каждого стаба найти NL на вызов вектора. Потом из вектора WSP* найти в графе текущую процедуру, извлечь связанный с ней NL, возвратить код ошибки, сохранить адрес процедуры и аргументы в TLS, выполнить стековую маршрутизацию из NL итераций. При возврате сохранить в стек аргументы из TLS и вектор, вызвать соответствующий апи фильтр, который обрабатывает WSA-процедуры. Сложнее немного, чем обрабатывать WSP, но более высокоуровнево.