у меня есть вопрос к товарищам знающим. как можно получить адреса по которым находятся стандартные функции ndis когда они похуканы? я смотрел соответствующие статьи, нашел, что при их хуке их родные адреса запоминаются, а затем при анхуке снимаются. а если хукал их не я ? как можно поступить? где их взять? смотрел также статью про обход оутпоста, но там тоже ареса получаются только если хук был произведен соответствующим образом. если же хук произведен чем нибудь другим можно случайно наураганить, взяв левые числа есть в принципе одна идейка, сейчас буду пробовать сделать как придумал, но совершенно не уверен в успехе
читай таблицу экспорта из файла. другое дело если сплайсинг, но и там можно извернутся, например загрузить вторую копию ndis.sys и работать с ней.
может ктонибудь подскажет? функции ndis в разных виндах разные? эт скорей всего да, но не факт. более того не разные ли они при различных сервиспаках?
с TDI вопрос вроде как решен, но лучше если и то и то, так хотябы для общего развития может чегото интересного найду/придумаю
Может просто у людей попросить... каждый зайдёт да скинет тебе по файличку для различных осей, а ты и сам проанализируешь...
Вот возьми сырцы Ndis'a для NT 4.0 может что-нибудь и пригодится... Это те самые скомунижженные исходнички ))))))))))) http://slil.ru/24442281
премного благодарен должно пригодиться я в принципе если чето надо раскопать обычно в ReactOS лезу...
someone, универсально получить обработчики протоколов и открытых блоков сложно, но можно. Эффективный способ - грузиться после фаера, но до загрузки ndis-драйверов, делать хук NdisRegisterProtocol/NdisOpenAdapter/NdisMRegisterMiniport/NdisIMRegisterLayeredMiniport поверх хуков фаера и выцеплять обработчики при загрузке винды. Ну а дальше делай что хочешь - восстанавливай (тоже с умом, фаеры проверяют свои обработчики), ставь свои хуки. Учти что некоторые фаеры ставят сплайсинг-хуки (в частности Tiny Firewall), некоторые обработчиков не хукают, а держат IM NDIS драйвер (в частности Look'n'Stop Firewall).
всетаки буду реализовывать так как ты сказал, свой метод буду пробовать сделать потому, когда больше времени свободного будет...
Вопрос про загрузку второй копии системного драйвера: А как это? Просто скопировать ветку реестра с модифицированным именем драйвера и положить в system32\drivers копию ndis ? ну типа NDIS_.SYS ляля Не дожидаясь ответа скажу - я пробовал так - загрузилось и даже не покрешилось Но! Дамп похученого фаером ндиса и этого что я загрузил разные, оно в принципе так и должно быть ))) НО! Сдампил похученый ndis.sys юзая AVZ снял фаер, рестартанул сдампил анхученый ndis.sys снова поставил фаер сдампил ndis.sys ВСЕ 3 ФАЙЛА РАЗНЫЕ :-D сдампил через 1 минуту - снова другой файл - т.е. в адресное пространство драйвера кто то что то постоянно пишет? все последующие дампы ndis.sys без отличий.
Если чесно я ХЗ что я дамплю В утиле AVZ есть вкладка: "Сервис"->"Модули пространства ядра" Вот там в списке и отображается системный драйвер ndis.sys Я так понимаю что это дамп только секции кода.
Что-то я не понимаю - аутпост ведь перехватывает на сами функции, а непосредственна NdisSendPacket: Код (Text): #define NdisSend(Status, NdisBindingHandle, Packet) \ { \ *(Status) = \ (((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->SendHandler)( \ ((PNDIS_OPEN_BLOCK)(NdisBindingHandle))->BindingHandle, \ (Packet)); \ } то есть заменяет запись в стр-ре NDIS_OPEN_BLOCK какого-то конкретного протокола (через который мы и будем отправлять пакет). НО! Ведь протокол может зарегистрировать любой драйвер (совсем не обязательно Ndis.sys). Вопрос в том - как найти адрес оригинального обработчика SendHandler? В экспорте Ndis.sys его уж точно нет.