Доброго времени суток!
Я поставил хук на функцию send() библиотеки wsock32.dll в процессе iexplore.exe
Таким образом, можно "прослушивать" исходящие запросы клиента.
Функция-перехватчик выглядит так:
LPVOID lpsend = NULL; // адрес оригинальной функции send()
BYTE bufsend[5] = {0}; // первые 5 байт оригинальной функции send()
// функция-перехватчик
int WINAPI xsend(
SOCKET s,
char* buf,
int len,
int flags
)
{
// запись запроса клиента в файл
CHAR rep[10000] = {0};
sprintf(rep, "\n\n send report:\n", buf);
CopyMemory(rep + strlen(rep), buf, len);
__WriteFile("C:\\http.txt", (PBYTE)rep, strlen(rep), MAX_INT);
// снятие хука
UnsetSplicingHook(lpsend, bufsend);
// вызов оригинальной функции
int res = send(s, buf, len, flags);
// установка хука обратно
SetSplicingHook(lpsend, xsend, bufsend);
return res;
}
В общем, всё так и должно быть?
У меня неск. вопросов:
1.) В отчёте очень часто встречаются такие вещи:
send report:
!
send report:
!
send report:
!
send report:
!
Что за? =)
2.) Когда используется
HTTPS-протокол, то вместо понятных HTTP-заголовков, мы получаем нечто вроде:
send report:
jфY60Hш“RЉЈmП@д(v‡iw6YшЌt¤Шџ$UФвY2·:nЭ0«lD%яЩі"“§l a„г‡nУИрЮaСммыV"#\э,RR‡ђ!‘7zш‰e~W†ТјХ&SО‚.Idэh?чA’
•сж™®KЬ/и1[эіає\Ц›доРЃФхдiґu$dBчвНзg—B?~mЧз!,n›™5 ТЏБе
Т.е. шифрованный HTTP-заголовок.
Вопрос: как расшифровать?
Какие функции отвечают за расшифровку? Имеет ли смысл перехватывать не на уровне сокетов, а на уровне wininet? Там данные уже будут расшифрованы?
Если да, то как дела обстоят в других браузерах? (FireFox, Opera, Safari) Какие там функции нужно перехватывать?
Или, может вообще, просто взять сертификат, дампить шифрованные данные как они есть, а потом, с помощью private-части SSL-сертификата вручную расшифровывать? Так прокатит?
Вроде, разобрался немного.
С IE дела обстоят понятно: Нужно перехватить HttpOpenRequest() и HttpSendReqest(). После этого все HTTPS-заголовки как на ладони. =)
Что делать с другими браузерами?
Вроде, Zeus хукает либу nspr4.dll (это в дистре FireFox'а). Какие конкретно функции? Кто-нибудь вкурсе?
И вообще — есть ли какие-нибудь отладочные ср-ва, которые отслеживают какие функции вызываются в приложениях из DLL? (ну, чтобы там можно было просматривать параметры функций, возвр. значения и пр.)
Здравствуйте, gribodemon, Вы писали:
G>Доброго времени суток!
G>Я поставил хук на функцию send() библиотеки wsock32.dll в процессе iexplore.exe
G>Таким образом, можно "прослушивать" исходящие запросы клиента.
Внезапный вопрос: это всё — зачем?
Второй вопрос: fiddler2.com уже смотрел?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Здравствуйте, gribodemon, Вы писали:
G>А теперь меня интересует что нужно перехватить, чтобы снифать на браузерах Opera и Safari.
Ок. Тогда нужно просто скачать fiddler2.com и волосы станут мягкими и шелковистыми.
S>>Второй вопрос: fiddler2.com уже смотрел?
G>Нет, сейчас посмотрю.