Подмена URL

Тема в разделе "WASM.WIN32", создана пользователем Sh4rk, 12 дек 2006.

  1. Sh4rk

    Sh4rk New Member

    Публикаций:
    0
    Регистрация:
    12 дек 2006
    Сообщения:
    3
    Как можно подменить программно урл ,например ввел ya.ru а попал google.com? (также как и через hosts файл но программно).
    Знаю что перехватом API, но какую именно ф-цию перехватывать уже запутался.
    Может кто знает?
     
  2. kyprizel

    kyprizel New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    232
    Адрес:
    TSK
    gethostbyname ;)
     
  3. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    (WSA)connect ;)
     
  4. codewalker

    codewalker New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    11
    Могу поделиться старым кодом :) Когда-то работало на IE, FireFox, Opera

    pass: мой ник
     
  5. Guest

    Guest Guest

    Публикаций:
    0
    - лучший способ т.к. gethostbyname не всегда прокатит.
     
  6. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    А gethostbyname в какой библиотеке лежит? Ищу в ws2_32.dll, wsock32.dll - получается и там, и там находит и перехватывает, но сама функция как будто не используется при соединении (пробую на примере IE)
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Active
    А может она и не используется? :)
     
  8. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Все больше в этом уверен. Перехватываю connect - все вроде нормально.
     
  9. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Просто возникают проблемы в исключительных ситуацих - например при открытии ссылок в поисковиках. Тогда запускается отдельный процесс, которому, как я понимаю, каким-то образом передается либо сcылка, либо готовый ip для соединения. Надеялся, что gethostbyname поможет во втором случае. Может кто-нибудь интересовался чем-то подобным, есть идеи? - поделитесь пожалуйста.
     
  10. nuclearpartizan

    nuclearpartizan New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2007
    Сообщения:
    12
    Могу поменять технологию урл редиректа на технологию html инжекта. Там особо ничего сложного нету, только перехват 3 винапи ф-й.
     
  11. colobos

    colobos New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    22
    Какие именно api, кроме connect и send участвуют в этом процессе?..........то есть какова сама технология html инжекта?
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    а может используется прямая посылка DNS. Лучше хучить connect/WSAConnect и парсить структурку SOCKADDR_IN
     
  13. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Может я запутался, но вроде так и делаю - правлю структуру, передаваемую параметром в connect - переписываю адрес сервера, с которым соединяемся, запускаю функцию заново. Но это работает только в случае, если переход производится через адресную строку или используются ссылки без параметров. Я так понял, для блокировки дополнительных запросов следует перехватить send(). - Отсюда еще непонятка - свой перехватчик внедрял IE, при открытии ссылки в отдельном окне, вроде как запускается новый экземпляр процесса браузера, но (?) с тем же перехватчиком (раньше думал, что запускается "чистый" процесс) - глупый, наверно, вопрос, но почему так происходит?

    Можно ли этот метод использовать в качестве альтернативы для подмены соединения (или ссылки) и как это работает?
     
  14. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    Active

    nuclearpartizan говорит о перехвате HttpSendRequest, InternetConnect, HttpOpenRequest наверное. Хорошая статья "Введение в WinInet" имеется на RSDN'е.
     
  15. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Черт, теперь и с send() такая же проблема: по отдельности пробую ws2_32.dll и wsock32.dll. Сплайсинг везде успешный. Ставлю int 3 в перехватчике. Мучаю осла как могу, а у того - ноль эмоций, как будто не использует он эту функцию. connect() же напротив - можно перехватить в обеих библиотеках, и в обоих случаях увидишь результат. Так что либо лыжЫ не едут.............. - скорее второе. Может кто сталкивался? - тема перехвата функций ws2_32.dll кажется востребованной, поэтому должны же найтись собратья по несчастью.

    Wininet.dll - это только для Internet Explorer'а?
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Угу. Opera и FF не используют его
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    одна из них вызывает вторую.
    а кто будет менять заголовок Host в запросе? Send() придется хучить тоже
     
  18. nuclearpartizan

    nuclearpartizan New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2007
    Сообщения:
    12
    Перехват InternetReadFile. Считывание в свой буфер. Изменение буфера. Отослать буфер программе, котороый эти пакеты предназначались.

    Вся загвоздка в последнем этапе.
     
  19. nuclearpartizan

    nuclearpartizan New Member

    Публикаций:
    0
    Регистрация:
    1 фев 2007
    Сообщения:
    12
    Работает только с IE.
    Можно использовать для подмены соединения.
    Наглядно, в адресной строке будет урл, которые ввел юзер, св-ва страницы, статус бар тоже подменяются.
     
  20. colobos

    colobos New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2007
    Сообщения:
    22
    Спасибо, понятно.