· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.NETWORKS —› wsock32!recv hook

Посл.отвђт Сообщенiе


Дата: Дек 3, 2003 19:49:58 · Поправил: hello_world

Я пишу простенький сниффер и хочу хукнуть recv чтобы писать в лог входящий траффик всех приложений.
Делаю сплайсинг recv'а во всех процессах.
Хукающая функция делает следующее:
1)снимает патч
2)вызывает recv
3)скидывает буффер в лог
4)ставит патч
5)возвращает управление
Все работает идеально во всех прогах(thebat,outlook,icq) кроме IE, который говорит что страница не найдена(в лог при этом пишется 1 байт). Совершенно случайно я обнаружил что если вставить в начало(или конец) хука messagebox, подождать 2-3 секунды и нажать ОК то IE нормально отобразит страницу(в лог она тоже запишется). Можно также сделать sleep на 2000-3000 и результат будет тот же.
Если кто копал IE или знает в чем дело, обьясните пожалуйста.

ЗЫ Могу сорец прислать, но там черт голову сломит :)


Дата: Дек 3, 2003 21:35:18

3)скидывает буффер в лог
4)ставит патч

А после этих 2х пунктов не забываете восстановить eax, который после recv?


Дата: Дек 3, 2003 21:42:59

Quantum
А после этих 2х пунктов не забываете восстановить eax, который после recv?
Конечно нет. В коде хука вообще ошибки исключены т.к. я точно также хукал send и кучу других функций. Проблема только с recv'ом и только в IE.


Дата: Дек 3, 2003 21:50:53

hello_world
Думаю, можно предположить, что задержка на 2-3 сек даёт время winsock на заполнение буфера, иначе он возвращает данные частично и IE вынужден вызвать recv ещё раз (в цикле или ещё как-то). Может хук глючит при слишком частом срабатывании?


Дата: Дек 3, 2003 22:49:39

Quantum
Может хук глючит при слишком частом срабатывании?
.data

Response	db	100 dup(0)
pResponse	dd	offset Response

.code
...
коннекчусь к mail.ru по 25 порту
...
___recv:

invoke	recv,hsock,pResponse,1,0
test	eax,eax
jz	___recv
inc	pResponse
jmp	___recv

В логе запись:
220 mail.ru ESMTP Wed, 03 Dec 2003 22:45:49 +0300

Так что похоже не в этом дело.


Дата: Дек 4, 2003 00:48:02

hello_world
Читать побайтно - не есть хорошо, хотя и не критично.
Вообще лучше читать ровно столько сколько требует IE (вдруг он просит 1 байт, а вы ему суёте все 100 или около того, и он оторопев выдаёт page_not_found :-)

А что если в буфере больше 100 байт? Лучше использовать буфер IE вместо Response.

Цикл бесконечный что ли?


Дата: Дек 4, 2003 01:06:25 · Поправил: hello_world

Quantum
Нет, ты не понял.
То что я запостил-это был не хук, а прога для теста на скорость хука. Т.е. я симитировал самые "экстримальные" условия и все нормально работало.
А сам хук естественно пишет в лог из буффера вызывающей программы количество байт равное eax после вызова реального recv'а.
Если нужно могу прислать исходник, просто мне придется выкинуть оттуда весь мусор :)


Дата: Дек 4, 2003 01:11:58 · Поправил: Quantum

hello_world
Ясно, а то я уже было испугался :-)

Если нужно могу прислать исходник
Ну, если никто больше не заучавствует в ближайшее время, можешь присылать.


Дата: Дек 4, 2003 01:49:53

Quantum
Ну, если никто больше не заучавствует в ближайшее время, можешь присылать.

Спасибо, я думаю что сам смогу разобраться, просто не хочется время убивать если есть готовое решение.
Подожду еще пару дней, а потом пойду IE мучить и если получится вывешу ответ сюда.
Большое спасибо за помощь.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.063