Как можно подменить программно урл ,например ввел ya.ru а попал google.com? (также как и через hosts файл но программно). Знаю что перехватом API, но какую именно ф-цию перехватывать уже запутался. Может кто знает?
А gethostbyname в какой библиотеке лежит? Ищу в ws2_32.dll, wsock32.dll - получается и там, и там находит и перехватывает, но сама функция как будто не используется при соединении (пробую на примере IE)
Просто возникают проблемы в исключительных ситуацих - например при открытии ссылок в поисковиках. Тогда запускается отдельный процесс, которому, как я понимаю, каким-то образом передается либо сcылка, либо готовый ip для соединения. Надеялся, что gethostbyname поможет во втором случае. Может кто-нибудь интересовался чем-то подобным, есть идеи? - поделитесь пожалуйста.
Могу поменять технологию урл редиректа на технологию html инжекта. Там особо ничего сложного нету, только перехват 3 винапи ф-й.
Какие именно api, кроме connect и send участвуют в этом процессе?..........то есть какова сама технология html инжекта?
а может используется прямая посылка DNS. Лучше хучить connect/WSAConnect и парсить структурку SOCKADDR_IN
Может я запутался, но вроде так и делаю - правлю структуру, передаваемую параметром в connect - переписываю адрес сервера, с которым соединяемся, запускаю функцию заново. Но это работает только в случае, если переход производится через адресную строку или используются ссылки без параметров. Я так понял, для блокировки дополнительных запросов следует перехватить send(). - Отсюда еще непонятка - свой перехватчик внедрял IE, при открытии ссылки в отдельном окне, вроде как запускается новый экземпляр процесса браузера, но (?) с тем же перехватчиком (раньше думал, что запускается "чистый" процесс) - глупый, наверно, вопрос, но почему так происходит? Можно ли этот метод использовать в качестве альтернативы для подмены соединения (или ссылки) и как это работает?
Active nuclearpartizan говорит о перехвате HttpSendRequest, InternetConnect, HttpOpenRequest наверное. Хорошая статья "Введение в WinInet" имеется на RSDN'е.
Черт, теперь и с send() такая же проблема: по отдельности пробую ws2_32.dll и wsock32.dll. Сплайсинг везде успешный. Ставлю int 3 в перехватчике. Мучаю осла как могу, а у того - ноль эмоций, как будто не использует он эту функцию. connect() же напротив - можно перехватить в обеих библиотеках, и в обоих случаях увидишь результат. Так что либо лыжЫ не едут.............. - скорее второе. Может кто сталкивался? - тема перехвата функций ws2_32.dll кажется востребованной, поэтому должны же найтись собратья по несчастью. Wininet.dll - это только для Internet Explorer'а?
одна из них вызывает вторую. а кто будет менять заголовок Host в запросе? Send() придется хучить тоже
Перехват InternetReadFile. Считывание в свой буфер. Изменение буфера. Отослать буфер программе, котороый эти пакеты предназначались. Вся загвоздка в последнем этапе.
Работает только с IE. Можно использовать для подмены соединения. Наглядно, в адресной строке будет урл, которые ввел юзер, св-ва страницы, статус бар тоже подменяются.