информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsВсе любят медАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Tailscale окончательно забанила... 
 Прекращение работы антивируса Касперского... 
 Microsoft Authenticator теряет... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 09:11  Число просмотров: 1056
Автор: NeuronViking_IForgotMyPassword Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > гениальный ответ!!! только ты малость ошибся.. все что
> ты
> > написал мне хорошо известно, мне также известно место
> > драйвера в системе, и я смогу отличить промежуточный
> > драйвер фильтр от монолитного драйвера ... а ежели ты
> не
> > знаешь ответа на конкретный вопрос то и флудить нефиг!
>
> "флудит" не kabanchik а ты, задавая подобные вопросы...
> судя по нему (твоему вопросу) ImHO можно сделать только
> один вывод - ты не в состоянии анализировать чужой код...
> либо вопрос поставлен не верно и никто не понял о чем же ты
> спрашиваешь...
>
> тебе уже ответили что return (status); может и не
> выполняться в зависимости от условий. видимо этого и не
> требуется.. скорее всего return (status); предназначен для
> аварийных ситуаций - когда драйвер не может быть загружен,
> а status присваивается где-то в DriverEntry.

да блин! я же все подробно описал!!! return (status); - исполняется! хотя перед этим уже произошел выход по return STATUS_SUCCESS; ... почему именно так работает?! ... для этого нужно понимать работу I/O Mangera ... я её не очень хорошо понимаю, поэтому и спрашиваю почему так происходит!
<programming>
[win32] [ntddk] driverentry - probllems!!! 22.11.01 04:07  
Автор: NeuronViking_IForgotMyPassword Статус: Незарегистрированный пользователь
<"чистая" ссылка>
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING Path){
... здесь какой-то код
if(выполняется какое-то условие){
... какой-то код
return STATUS_SUCCESS;// <- чё это за фигня?!
}
... здесь какой-то код
if(выполняется еще какое-то условие){
... какой-то код
return STATUS_SUCCESS;// <- чё это за фигня?!
}
... здесь какой-то код
return(Status);
}
.
фишка в том, что я не понимаю как после всех этих return'ов достигается конец функции DriverEntry?! ведь если в первом условии произошел выход по return STATUS_SUCCESS то каким образом исполнится return(Status); ?
дело в том что это работает зараза! я не понимаю ПОЧЕМУ это работает!!! ... ктонть знает как работает I/O Manager а?!
[win32] [ntddk] driverentry - probllems!!! 22.11.01 16:15  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,IN
> PUNICODE_STRING Path){
> ... здесь какой-то код
> if(выполняется какое-то условие){
> ... какой-то код
> return STATUS_SUCCESS;// <- чё это за фигня?!
> }
> ... здесь какой-то код
> if(выполняется еще какое-то условие){
> ... какой-то код
> return STATUS_SUCCESS;// <- чё это за фигня?!
> }
> ... здесь какой-то код
> return(Status);
> }
> .
> фишка в том, что я не понимаю как после всех этих return'ов
> достигается конец функции DriverEntry?! ведь если в первом
> условии произошел выход по return STATUS_SUCCESS то каким
> образом исполнится return(Status); ?
> дело в том что это работает зараза! я не понимаю ПОЧЕМУ это
> работает!!! ... ктонть знает как работает I/O Manager а?!

U menya takoe vpechatlenie, chto ty ne to chto ne ponimaesh' kak driver rabotaet, a ne ponimaesh' voobshe kak programmy rabotayut. Sorry, no mozhet tebe sleduet snachal ponyat' kak "Hello World" rabotaet :-)

vo-pervyx STATUS_SUCCESS (eto constant opredelennaya kak 0) govorit o tom chto driver zagruzilsya.

vo-vtoryx return (Status) mozhet byt' chto ugodno, v zavisimosti ot koda, a Status veroyatno peremennaya libo lokal'naya dlja funkcii, libo global'naya dlja vsego driver-a. I to chto funkcia doxodit do etoj tochki, po moemu dazhe i govorit' ne stoit. esli ni odno iz vysheuprivedennyx "IF" uslovij ne vypolnyaetsya to predstav' sebe f-ia dojdet do tochki return(Status);

v-tret'ix, sut' drivera - eto zagruzka v kernel. ee nado rassmatrivat' kak .DLL-ku. Tozhe samoe esli skazat' - ya ne ponimaju kak DLL zagruzhaetsya v .EXE-file. Vot pochti takim obrazom i .SYS file zagruzhaetsya v tvoj kernel.

v-chetvertyx, prezhde chem razbiratsya kak vse eto rabotaet, navernoe vse taki stoit pochitat' chto takoe driver. a to prosto listat' kody - privedet tol'ko k golovnoj boli .

Ne obizhajsya na moj ton, prosto ty zadaesh' vopros na otvet kotorogo ty eshe ne gotov, t.e. esli dazhe kto nit' obyasnit tebe kak vsya eta fignya rabotaet, ty vse ravno ne pojmesh', eshe.


regards.
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 04:58  
Автор: NeuronViking_IForgotMyPassword Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,IN
> > PUNICODE_STRING Path){
> > ... здесь какой-то код
> > if(выполняется какое-то условие){
> > ... какой-то код
> > return STATUS_SUCCESS;// <- чё это за
> фигня?!
> > }
> > ... здесь какой-то код
> > if(выполняется еще какое-то условие){
> > ... какой-то код
> > return STATUS_SUCCESS;// <- чё это за фигня?!
> > }
> > ... здесь какой-то код
> > return(Status);
> > }
> > .
> > фишка в том, что я не понимаю как после всех этих
> return'ов
> > достигается конец функции DriverEntry?! ведь если в
> первом
> > условии произошел выход по return STATUS_SUCCESS то
> каким
> > образом исполнится return(Status); ?
> > дело в том что это работает зараза! я не понимаю
> ПОЧЕМУ это
> > работает!!! ... ктонть знает как работает I/O Manager
> а?!
>
> U menya takoe vpechatlenie, chto ty ne to chto ne
> ponimaesh' kak driver rabotaet, a ne ponimaesh' voobshe kak
> programmy rabotayut. Sorry, no mozhet tebe sleduet snachal
> ponyat' kak "Hello World" rabotaet :-)
>
> vo-pervyx STATUS_SUCCESS (eto constant opredelennaya kak 0)
> govorit o tom chto driver zagruzilsya.
>
> vo-vtoryx return (Status) mozhet byt' chto ugodno, v
> zavisimosti ot koda, a Status veroyatno peremennaya libo
> lokal'naya dlja funkcii, libo global'naya dlja vsego
> driver-a. I to chto funkcia doxodit do etoj tochki, po
> moemu dazhe i govorit' ne stoit. esli ni odno iz
> vysheuprivedennyx "IF" uslovij ne vypolnyaetsya to
> predstav' sebe f-ia dojdet do tochki return(Status);
>
> v-tret'ix, sut' drivera - eto zagruzka v kernel. ee nado
> rassmatrivat' kak .DLL-ku. Tozhe samoe esli skazat' - ya ne
> ponimaju kak DLL zagruzhaetsya v .EXE-file. Vot pochti
> takim obrazom i .SYS file zagruzhaetsya v tvoj kernel.
>
> v-chetvertyx, prezhde chem razbiratsya kak vse eto
> rabotaet, navernoe vse taki stoit pochitat' chto takoe
> driver. a to prosto listat' kody - privedet tol'ko k
> golovnoj boli .
>
> Ne obizhajsya na moj ton, prosto ty zadaesh' vopros na
> otvet kotorogo ty eshe ne gotov, t.e. esli dazhe kto nit'
> obyasnit tebe kak vsya eta fignya rabotaet, ty vse ravno ne
> pojmesh', eshe.
>
>
> regards.
гениальный ответ!!! только ты малость ошибся.. все что ты написал мне хорошо известно, мне также известно место драйвера в системе, и я смогу отличить промежуточный драйвер фильтр от монолитного драйвера ... а ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг!
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 21:17  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>

> гениальный ответ!!! только ты малость ошибся.. все что ты
Na гениальныe voprosy nado tol'koгениальноotvechat' :-)

> написал мне хорошо известно, мне также известно место
> драйвера в системе, и я смогу отличить промежуточный
daaa ??? nu i gde zhe ego mesto v systeme ??? neuzheli "Winnt\system32 " ????

> драйвер фильтр от монолитного драйвера ... а ежели ты не
Mne dejstvitel'no interestno chto takoe " промежуточный драйвер фильтр " i " монолитный драйвер " ??? i kakoe zhe otlichie mezhdu nimi ???

> знаешь ответа на конкретный вопрос то и флудить нефиг!
<no comments>

pochital perepisku s cb ... On v drivere-ax poopytnej tebya, pover' mne na slovo :-))) ty dejstvitel'no ne ponimaesh' kak driver rabotaet .... kstati chto ty privyazalsya k " I/O Manager" ??? Tebe luchshe ne I/O Manger ponimat' nado a kak IRP packety peresylajutsya .... rabotu dispatchera ponimat' nado :-) K primeru ty sozdaesh' Object v pamjati, a potom unichtozhaesh', ty zhe ne zadumyvaesh'sya nad tem kak tvoj Memory Manager rabotaet ??? :-))))

A to chto ty pishesh', tipa driver posle vyxoda STATUS_SUCCESS kak to popodaet snova na return(Status), ne chto inoe kak kto to gruzit driver vo vtoroj raz, i vidimo on (driver) ponimaet, chto on uzhe sidit v systeme i vyxodit iz funkcii s code-om oshibki.Vyvod- ty stalknulsya ne s chem inym kak s Bug-om, a ne s I/O Manager-om :-)))))

a cb prav, tebe chuzhie code-y ponimat' snachala nado ....

regards.

P.S. i ne stoit obizhat'sya ...
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 08:28  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> гениальный ответ!!! только ты малость ошибся.. все что ты
> написал мне хорошо известно, мне также известно место
> драйвера в системе, и я смогу отличить промежуточный
> драйвер фильтр от монолитного драйвера ... а ежели ты не
> знаешь ответа на конкретный вопрос то и флудить нефиг!

"флудит" не kabanchik а ты, задавая подобные вопросы...
судя по нему (твоему вопросу) ImHO можно сделать только один вывод - ты не в состоянии анализировать чужой код... либо вопрос поставлен не верно и никто не понял о чем же ты спрашиваешь...

тебе уже ответили что return (status); может и не выполняться в зависимости от условий. видимо этого и не требуется.. скорее всего return (status); предназначен для аварийных ситуаций - когда драйвер не может быть загружен, а status присваивается где-то в DriverEntry.
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 09:11  
Автор: NeuronViking_IForgotMyPassword Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > гениальный ответ!!! только ты малость ошибся.. все что
> ты
> > написал мне хорошо известно, мне также известно место
> > драйвера в системе, и я смогу отличить промежуточный
> > драйвер фильтр от монолитного драйвера ... а ежели ты
> не
> > знаешь ответа на конкретный вопрос то и флудить нефиг!
>
> "флудит" не kabanchik а ты, задавая подобные вопросы...
> судя по нему (твоему вопросу) ImHO можно сделать только
> один вывод - ты не в состоянии анализировать чужой код...
> либо вопрос поставлен не верно и никто не понял о чем же ты
> спрашиваешь...
>
> тебе уже ответили что return (status); может и не
> выполняться в зависимости от условий. видимо этого и не
> требуется.. скорее всего return (status); предназначен для
> аварийных ситуаций - когда драйвер не может быть загружен,
> а status присваивается где-то в DriverEntry.

да блин! я же все подробно описал!!! return (status); - исполняется! хотя перед этим уже произошел выход по return STATUS_SUCCESS; ... почему именно так работает?! ... для этого нужно понимать работу I/O Mangera ... я её не очень хорошо понимаю, поэтому и спрашиваю почему так происходит!
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 09:22  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> да блин! я же все подробно описал!!! return (status); -
> исполняется! хотя перед этим уже произошел выход по return
> STATUS_SUCCESS; ... почему именно так работает?! ... для
> этого нужно понимать работу I/O Mangera ... я её не очень
> хорошо понимаю, поэтому и спрашиваю почему так происходит!

ок... начнем с начала...
как ты узнал что он попадает на return (status); после return STATUS_SUCCES;
опиши вкратце процесс...
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 16:50  
Автор: NeuronViking_IForgotMyPassword Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > да блин! я же все подробно описал!!! return (status);
> -
> > исполняется! хотя перед этим уже произошел выход по
> return
> > STATUS_SUCCESS; ... почему именно так работает?! ...
> для
> > этого нужно понимать работу I/O Mangera ... я её не
> очень
> > хорошо понимаю, поэтому и спрашиваю почему так
> происходит!
>
> ок... начнем с начала...
> как ты узнал что он попадает на return (status); после
> return STATUS_SUCCES;
> опиши вкратце процесс...

дело в том, что после return STATUS_SUCCES находится очень важный код без которого не может нормально функционаровать драйвер ...а так как этот драйвер работает то я и предполагаю очевидно что эта часть кода(после return STATUS_SUCCES) исполняется каким то образом ...
[win32] [ntddk] ежели ты не знаешь ответа на конкретный вопрос то и флудить нефиг! 23.11.01 17:00  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> дело в том, что после return STATUS_SUCCES находится очень
> важный код без которого не может нормально функционаровать
> драйвер ...а так как этот драйвер работает то я и
> предполагаю очевидно что эта часть кода(после return
> STATUS_SUCCES) исполняется каким то образом ...

ну во-первых это не аргумент - если бы ты отладчиком посмотрел я бы тебе поверил, а так нет.. сорри...

если речь идет про
winpcap\packetNtx\DRIVER\Packet.c

DriverEntry(...)
{
::::::::::::::::::
Status=PacketReadRegistry(
&BindString,
&ExportString,
RegistryPath
);

if (Status != STATUS_SUCCESS)
{
IF_LOUD(DbgPrint("Failed to read registry for Packet\n");)
IF_LOUD(DbgPrint("Trying dynamic binding\n");)

tcpBindingsP = getTcpBindings();
::::::::::::::::::::::::
return STATUS_SUCCESS;
}

::::::::::::::::::
return(Status);
}

то тут по моему все ясно либо используется статический binding (PacketReadRegistry() = STATUS_SUCCESS) либо динамический (PacketReadRegistry() != STATUS_SUCCESS) - эти два куска кода вместе никогда и не должны исполняться... так что все ок..

cb.
[win32] [ntddk] driverentry - probllems!!! 22.11.01 11:12  
Автор: SerpentFly <Vadim Smirnov> Статус: Member
<"чистая" ссылка>
Я не знаю из какого драйвера ты это выдрал, но ничего такого странного я в этом коде не вижу, инициализация идет разными ветками, если это NT4, то вполне вероятно в зависимости обнаруженных устройств (в WDM DriverEntry обычно мало что делает, инициализация глобальных переменных в основном), параметров в реестре и т.п.. Не совсем понимаю причем тут IO Manager...

Homepage
[win32] [ntddk] это winpcap... 22.11.01 11:46  
Автор: NeuronViking_IForgotMyPassword Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach