Короче заменил я данную функцию на свою, ну это в таблице системных вызовов, а потом в своей тупо вызываю уже виндовскую. И вот тут то собака и порылась. Винда не зависает, не перегружается, но уже не так работает, некторые процессы не запускаются, DbgView вообще глючит. Хотя данная техника перехвата нейтив функций применяласб уже не раз, везде работала, а тут обломс. В чем может быть трабла? Может где то нада подшаманить как то?
Здравствуйте, Denwer, Вы писали:
D>Короче заменил я данную функцию на свою, ну это в таблице системных вызовов, а потом в своей тупо вызываю уже виндовскую. И вот тут то собака и порылась. Винда не зависает, не перегружается, но уже не так работает, некторые процессы не запускаются, DbgView вообще глючит. Хотя данная техника перехвата нейтив функций применяласб уже не раз, везде работала, а тут обломс. В чем может быть трабла? Может где то нада подшаманить как то?
Вы что, из перехватчика прямо экспорт NtDeviceIoControlFile зовете? Если так, то вообще удивительно что хоть что то работает. Вам надо определить адрес точки входа по смещению, указанному в SDT и вызвать процедуру по этому адресу. NtDeviceIoControlFile можно звать только из контекста системных потоков.
Здравствуйте, Denwer, Вы писали:
D>Короче заменил я данную функцию на свою, ну это в таблице системных вызовов, а потом в своей тупо вызываю уже виндовскую. И вот тут то собака и порылась. Винда не зависает, не перегружается, но уже не так работает, некторые процессы не запускаются, DbgView вообще глючит. Хотя данная техника перехвата нейтив функций применяласб уже не раз, везде работала, а тут обломс. В чем может быть трабла? Может где то нада подшаманить как то?
Купил я себе пальто а цвет мне не нравится, может я цвет взял не тот, а как скажите какой мне подойдет.
Это я так, а на деле надо смотреть что-вы делаете в процессе перехвата. А насчет DbgView — так он часто глючит, так как при любых операциях, открытия файла и так далее в самом DbgView, и если системой будет вызвана функция которую перехватывает его драйвер, получим дедлок — так как она на это время блокирует процесс выборки.
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, TarasCo, Вы писали:
TC>Здравствуйте, Denwer, Вы писали:
D>>Короче заменил я данную функцию на свою, ну это в таблице системных вызовов, а потом в своей тупо вызываю уже виндовскую. И вот тут то собака и порылась. Винда не зависает, не перегружается, но уже не так работает, некторые процессы не запускаются, DbgView вообще глючит. Хотя данная техника перехвата нейтив функций применяласб уже не раз, везде работала, а тут обломс. В чем может быть трабла? Может где то нада подшаманить как то?
TC> Вы что, из перехватчика прямо экспорт NtDeviceIoControlFile зовете? Если так, то вообще удивительно что хоть что то работает. Вам надо определить адрес точки входа по смещению, указанному в SDT и вызвать процедуру по этому адресу. NtDeviceIoControlFile можно звать только из контекста системных потоков.
Естественно перед изменением в SDT я запомнил старый адрес, и вот его то и вызываю.
TC>> Вы что, из перехватчика прямо экспорт NtDeviceIoControlFile зовете? Если так, то вообще удивительно что хоть что то работает. Вам надо определить адрес точки входа по смещению, указанному в SDT и вызвать процедуру по этому адресу. NtDeviceIoControlFile можно звать только из контекста системных потоков.
D>Естественно перед изменением в SDT я запомнил старый адрес, и вот его то и вызываю.
Здравствуйте, Злость, Вы писали:
З>Это я так, а на деле надо смотреть что-вы делаете в процессе перехвата. А насчет DbgView — так он часто глючит, так как при любых операциях, открытия файла и так далее в самом DbgView, и если системой будет вызвана функция которую перехватывает его драйвер, получим дедлок — так как она на это время блокирует процесс выборки.
Кстати да, он стервец НОТ РЕСПОНДЕД. А как же тогда отлаживаться без DbgView?
Здравствуйте, TarasCo, Вы писали:
TC>Здравствуйте, Denwer, Вы писали:
D>>Короче заменил я данную функцию на свою, ну это в таблице системных вызовов, а потом в своей тупо вызываю уже виндовскую. И вот тут то собака и порылась. Винда не зависает, не перегружается, но уже не так работает, некторые процессы не запускаются, DbgView вообще глючит. Хотя данная техника перехвата нейтив функций применяласб уже не раз, везде работала, а тут обломс. В чем может быть трабла? Может где то нада подшаманить как то?
TC> Вы что, из перехватчика прямо экспорт NtDeviceIoControlFile зовете? Если так, то вообще удивительно что хоть что то работает. Вам надо определить адрес точки входа по смещению, указанному в SDT и вызвать процедуру по этому адресу. NtDeviceIoControlFile можно звать только из контекста системных потоков.
Не вижу разници для перехватчика (принимаю к вниманию что больше ее никто не хукает), что он будет вызывать функцию по адресу который лежал в таблице SDT или укажет вызов просто NtDeviceIoControlFile. (так как там именно этот адрес — если конечно кто-то уже не осуществил перехват.) Еще я предпологаю что зовет именно NtDeviceIoControlFile а не ZwDeviceIoControlFile — если это не так то 100% ошибка.
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
[skip]
З>>Это я так, а на деле надо смотреть что-вы делаете в процессе перехвата. А насчет DbgView — так он часто глючит, так как при любых операциях, открытия файла и так далее в самом DbgView, и если системой будет вызвана функция которую перехватывает его драйвер, получим дедлок — так как она на это время блокирует процесс выборки.
D>Кстати да, он стервец НОТ РЕСПОНДЕД. А как же тогда отлаживаться без DbgView?
Очень просто — для отладки включи в список доверяемых процессов его — большенство дедлоков исключишь.
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, Злость, Вы писали:
З>Здравствуйте, Denwer, Вы писали:
З>[skip]
З>>>Это я так, а на деле надо смотреть что-вы делаете в процессе перехвата. А насчет DbgView — так он часто глючит, так как при любых операциях, открытия файла и так далее в самом DbgView, и если системой будет вызвана функция которую перехватывает его драйвер, получим дедлок — так как она на это время блокирует процесс выборки.
D>>Кстати да, он стервец НОТ РЕСПОНДЕД. А как же тогда отлаживаться без DbgView?
З>Очень просто — для отладки включи в список доверяемых процессов его — большенство дедлоков исключишь.
[skip]
З>>Очень просто — для отладки включи в список доверяемых процессов его — большенство дедлоков исключишь.
D>А это как делается?
Добавляешь себе в код функцию которая будет по имени процесса (инициатора вызова) возвращать что он в доверяемом списке. И вставляешь во все функции с начала эту проверку. Для отладки этого хватит.
Пусто
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Здравствуйте, Denwer, Вы писали:
D>Т.е. там даже и грешить то неначто.
А что за система? Я SDT практически не трогал, тока созерцал А вот когда изучал XP x64, то наблюдал, что в SDT храняться не смещения в чистом виде. При получении адреса функции нужно было еще младшие 4 бита сбрасывать. Может на 32 битных системах тоже что-то подобное и вот выплыло?
Здравствуйте, TarasCo, Вы писали:
TC>Здравствуйте, Denwer, Вы писали:
D>>Т.е. там даже и грешить то неначто.
TC>А что за система? Я SDT практически не трогал, тока созерцал А вот когда изучал XP x64, то наблюдал, что в SDT храняться не смещения в чистом виде. При получении адреса функции нужно было еще младшие 4 бита сбрасывать. Может на 32 битных системах тоже что-то подобное и вот выплыло?
XP SP2 — 32 битная
C другими функциями все работает как часы, вот только с одной этой выплыли траблы.
Здравствуйте, Denwer, Вы писали:
D>Короче заменил я данную функцию на свою, ну это в таблице системных вызовов, а потом в своей тупо вызываю уже виндовскую. И вот тут то собака и порылась. Винда не зависает, не перегружается, но уже не так работает, некторые процессы не запускаются, DbgView вообще глючит. Хотя данная техника перехвата нейтив функций применяласб уже не раз, везде работала, а тут обломс. В чем может быть трабла? Может где то нада подшаманить как то?
Что называется сам дурак, после работы драйвера восстанавливал указатель в таблице SDT совсем другой функцией. Вообще странно почему не падало.