Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.168.16] |
|
Страницы: (6) « Первая ... 3 4 [5] 6 все ( Перейти к последнему сообщению ) |
Сообщ.
#61
,
|
|
|
Цитата Rouse_ @ Она перехватывает только функции обьявленные в таблице импорта. Браузеры-же используют wininet... А как сделать для браузера? Помогите, пожалуйста, поясните!! Вся надежда на Вас! Начинаю седеть |
Сообщ.
#62
,
|
|
|
Вот читай про сплайсинг:
http://www.wasm.ru/article.php?article=apihook_1 http://www.wasm.ru/article.php?article=sasapi Перехватывать нужно InternetOpenUrl, HttpSendRequest, InternetReadFile, InternetReadFileEx |
Сообщ.
#63
,
|
|
|
Нашол статейки о перехвате функций send, WSASend, recv, WSAResv с библиотеки ws2_32.dll.
Компилировал примерчики... В статейке написано, шо гарантировано работает, но у меня почемуто нет... Библиотечка внедряется, но запросы не блокируются?! Вот один из примеров Прикреплённый файлmshlp.rar (1.05 Кбайт, скачиваний: 304) |
Сообщ.
#64
,
|
|
|
Скорее всего вот это не отрабатывает:
hws2_32 := GetModuleHandle('ws2_32.dll'); |
Сообщ.
#65
,
|
|
|
Цитата Rouse_ @ hws2_32 := GetModuleHandle('ws2_32.dll'); А как на Ваш взгляд лучше сделать? |
Сообщ.
#66
,
|
|
|
Ну хотябы так:
var bLoaded: Boolean = False; ... try hws2_32 := GetModuleHandle('ws2_32.dll'); if hws2_32 = 0 then begin hws2_32 := LoadLibrary('ws2_32.dll'); bLoaded := hws2_32 > HINSTANCE_ERROR; if bLoaded then begin ... end; finally if bLoaded then FreeLibrary(hws2_32); end; |
Сообщ.
#67
,
|
|
|
Создал свою dll для внедрения в адресное пространство приложения (а конкретно браузера) и простенькое приложение для внедрение библиотеки в браузер. Использую библиотечку advApiHook coded By Ms-Rem. Функция перехвата возвращает код успешного перехвата. Осуществляется переход на мою функцию send. Но при чтении буфера Buf браузера, в котором находиться его запрос, вилетает браузер. Почему!!! Много експериментировал, но ничего не помогает. Все равно вилетает браузер. Вот проект
Прикреплённый файлHookSend.rar (374.39 Кбайт, скачиваний: 318) |
Сообщ.
#68
,
|
|
|
немного пофлужу, но по моему обсуждение поменяло термин "сниффер" на "фаервол". Чтобы решить предложенные здесь задачи я думаю проще поискать исходные тексты фаерволов: ведь самые простые из них с самого начала могли как полностью блокировать сетевые подключения, так и "вырезать" ненужный контент, такой как реклама.
Как я споминаю, фаервол может не работать через драйвер: виндовс с самого начала предусмотрела такие функции - т.е. перед отправкой/приемом любого пакета вызывается callback функция (название сейчас хоть убейте не вспомню, но искал я в страндартом msdn), возвращающая в результате действие, с которым надлежит поступить с этим пакетом. |
Сообщ.
#69
,
|
|
|
Цитата vljak @ с самого начала предусмотрела такие функции - т.е. перед отправкой/приемом любого пакета вызывается callback функция Эмм... параметр LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine в функции WSASend()? |
Сообщ.
#70
,
|
|
|
Написал прогу которая перехватывает запросы браузера до отправки в сеть, а точнее функции HttpOpenRequestA HttpSendRequest (перехватываю методом сплайсинга, использую библиотеку advApiHook)! Кому интересно пишите на ajax20@ukr.net (исходников нет с собой, позже тут выложу). Прога сырая, но кто заинтересован - доработает.
Но есть маленькая проблема - мне нужно прерывать загрузку отдельного файла (контента страницы) в любой момент!!!!! В даной же проге я могу сделать прерывание только через не отправку запроса в сеть!! Есть ли функции в WinInet и не только, которые позволяют это сделать. Или только надо писать прокси (если да, то есть ли подобные исходники). Люди которые в этом хорошо разбираются отзовитесь!!! Поясните пожалуйста мне как реализовать отмену загрузки отдельного взятого файла в любой момент. |
Сообщ.
#71
,
|
|
|
Цитата sAshA20 @ как реализовать отмену загрузки отдельного взятого файла в любой момент Фактически это означает прерывание работы recv() в произвольный момент. Механизма API такого останова работы я пока не знаю. Мое первое решение, которое пришло в голову - такое: Прием файла(загрузка) идет в отдельном потоке. Второй поток просто висит как дамоклов меч - как только получает команду, убивает поток приема - вместе с recv() Может кто и другое получше предложит |
Сообщ.
#72
,
|
|
|
Ну механизм можно сделать на основе того-же Recv, только принимать маленькими порциями. Т.е. при перехвате начинаем закачку самостоятельно и по поступлении команды о отмене, прекращаем закачку и возвращаем к примеру WSA_OPERATION_ABORTED...
|
Сообщ.
#73
,
|
|
|
Цитата Rouse_ @ на основе того-же Recv А как из функции recv мы узнаем какой файл пришел или на какой запрос пришел ответ! или я чего-то не догоня... И можно ли сделать так: перехватывая функции HttpOpenRequestA, HttpSendRequest и подобные, и запуская их в отдельных потоках, могу ли я отменить загрузку отдельного файла в любой момент, прикрыв нужный поток? |
Сообщ.
#74
,
|
|
|
Цитата sAshA20 @ А как из функции recv мы узнаем какой файл пришел или на какой запрос пришел ответ! Она предназначена для приема буффера Если хочешь что-то узнать нужно еще сплайсить функции |
Сообщ.
#75
,
|
|
|
Цитата Rouse_ @ Она предназначена для приема буффера Если хочешь что-то узнать нужно еще сплайсить функции Пожалуйста, поясните как можно поподробней и попорядку. Это мне очень важно. Не хочу что нибудь упустить. Пожалуйста! |