|
|
| Посл.отвђт | Сообщен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 |