NDIS unhooking

Тема в разделе "WASM.BEGINNERS", создана пользователем someone, 30 май 2007.

  1. someone

    someone New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    51
    у меня есть вопрос к товарищам знающим.
    как можно получить адреса по которым находятся стандартные функции ndis когда они похуканы?
    я смотрел соответствующие статьи, нашел, что при их хуке их родные адреса запоминаются, а затем при анхуке снимаются. а если хукал их не я ? как можно поступить? где их взять?
    смотрел также статью про обход оутпоста, но там тоже ареса получаются только если хук был произведен соответствующим образом.
    если же хук произведен чем нибудь другим можно случайно наураганить, взяв левые числа :dntknw:
    есть в принципе одна идейка, сейчас буду пробовать сделать как придумал, но совершенно не уверен в успехе :dntknw:
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    читай таблицу экспорта из файла. другое дело если сплайсинг, но и там можно извернутся, например загрузить вторую копию ndis.sys и работать с ней.
     
  3. someone

    someone New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    51
    слишком просто :))))
    если то что я придумал работать не будет - буду пробовать сделать так :)
     
  4. someone

    someone New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    51
    может ктонибудь подскажет?
    функции ndis в разных виндах разные?
    эт скорей всего да, но не факт.
    более того не разные ли они при различных сервиспаках?
     
  5. sxd

    sxd Виталий

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    56
    Адрес:
    Москва
    Нужна инфа тока по NDIS или можно и на TDI?
     
  6. someone

    someone New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    51
    с TDI вопрос вроде как решен, но лучше если и то и то, так хотябы для общего развития :) может чегото интересного найду/придумаю :)
     
  7. sxd

    sxd Виталий

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    56
    Адрес:
    Москва
    Может просто у людей попросить... каждый зайдёт да скинет тебе по файличку для различных осей, а ты и сам проанализируешь...
     
  8. sxd

    sxd Виталий

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    56
    Адрес:
    Москва
    Вот возьми сырцы Ndis'a для NT 4.0 может что-нибудь и пригодится...
    Это те самые скомунижженные исходнички )))))))))))
    http://slil.ru/24442281
     
  9. someone

    someone New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    51
    премного благодарен :)
    должно пригодиться
    я в принципе если чето надо раскопать обычно в ReactOS лезу... :)
     
  10. MaDF

    MaDF New Member

    Публикаций:
    0
    Регистрация:
    10 май 2005
    Сообщения:
    83
    someone, универсально получить обработчики протоколов и открытых блоков сложно, но можно. Эффективный способ - грузиться после фаера, но до загрузки ndis-драйверов, делать хук NdisRegisterProtocol/NdisOpenAdapter/NdisMRegisterMiniport/NdisIMRegisterLayeredMiniport поверх хуков фаера и выцеплять обработчики при загрузке винды. Ну а дальше делай что хочешь - восстанавливай (тоже с умом, фаеры проверяют свои обработчики), ставь свои хуки. Учти что некоторые фаеры ставят сплайсинг-хуки (в частности Tiny Firewall), некоторые обработчиков не хукают, а держат IM NDIS драйвер (в частности Look'n'Stop Firewall).
     
  11. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    someone
    314-442
    постучи в асю... тоже сейчас над этим работаю... )) авосб что-то придумаем вместе )
     
  12. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    ну почему просто, всё таки кое-какие фишки надо знать, а обходит большинство хуков.
     
  13. someone

    someone New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    51
    всетаки буду реализовывать так как ты сказал, свой метод буду пробовать сделать потому, когда больше времени свободного будет... :)
     
  14. spider

    spider Spider

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    35
    Вопрос про загрузку второй копии системного драйвера:
    А как это? :)
    Просто скопировать ветку реестра с модифицированным именем драйвера и положить в system32\drivers копию ndis ?
    ну типа NDIS_.SYS ляля

    Не дожидаясь ответа скажу - я пробовал так - загрузилось и даже не покрешилось :)
    Но! Дамп похученого фаером ндиса и этого что я загрузил разные, оно в принципе так и должно быть )))

    НО!

    Сдампил похученый ndis.sys юзая AVZ
    снял фаер, рестартанул сдампил анхученый ndis.sys
    снова поставил фаер сдампил ndis.sys

    ВСЕ 3 ФАЙЛА РАЗНЫЕ :-D

    сдампил через 1 минуту - снова другой файл - т.е. в адресное пространство драйвера кто то что то постоянно пишет?

    все последующие дампы ndis.sys без отличий.
     
  15. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    там же куча глобальных переменных, или ты дампишь только секцию кода?
     
  16. spider

    spider Spider

    Публикаций:
    0
    Регистрация:
    25 авг 2007
    Сообщения:
    35
    Если чесно я ХЗ что я дамплю :)
    В утиле AVZ есть вкладка: "Сервис"->"Модули пространства ядра" Вот там в списке и отображается системный драйвер ndis.sys

    Я так понимаю что это дамп только секции кода.
     
  17. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    попробуй дампить тем же RkU например
     
  18. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Что-то я не понимаю - аутпост ведь перехватывает на сами функции, а непосредственна NdisSendPacket:
    Код (Text):
    1. #define NdisSend(Status, NdisBindingHandle, Packet)                         \
    2. {                                                                           \
    3.     *(Status) =                                                             \
    4.         (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->SendHandler)(             \
    5.             ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->BindingHandle,         \
    6.         (Packet));                                                          \
    7. }
    то есть заменяет запись в стр-ре NDIS_OPEN_BLOCK какого-то конкретного протокола (через который мы и будем отправлять пакет). НО! Ведь протокол может зарегистрировать любой драйвер (совсем не обязательно Ndis.sys). Вопрос в том - как найти адрес оригинального обработчика SendHandler? В экспорте Ndis.sys его уж точно нет.