информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Страшный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Если ты напишешь что-то подобное Softice, то сможешь сделать задуманное 11.10.01 17:43  Число просмотров: 807
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
А вообще-то я не совсем понял, НТ вываливается в синий экран с сообщением об ошибке или как.

P.S. Честно говоря, слабо представляю что можно придумать :-(
<programming>
[Win32] можно ли повесить хук на обращение к определенному участку памяти? 11.10.01 15:27  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
короче драйвер одного девайса глючит, вываливается окно с Exception:
Access Violation.

заказчик нашей проги рвет и мечет.
сорсов драйвера нет и не предвидется, кому интересно - это драйвер четырехпотоковой платы Dialogic (фирма недавно куплена Intel'ом).

в связи с этим вопрос:
можно ли отслеживать обращение чужой проги к определенному диапазону адресов, с целью обмануть ее.

например, прога делает:

mov EDI,0
mov EAX,[EDI]

а я возникающее исключение ловлю,
делаю
mov EAX,0; например
и передаю управление следующей после вызвавшей исключение команде этого долбанного драйвера:(
--------
что посоветуете?
пропатчить Ntoskrnl не предлагайте:)
[Win32] можно ли повесить хук на обращение к определенному участку памяти? 12.10.01 10:34  
Автор: z0 <z0> Статус: Member
<"чистая" ссылка>
> можно ли отслеживать обращение чужой проги к определенному
> диапазону адресов, с целью обмануть ее.
>
> например, прога делает:
>
> mov EDI,0
> mov EAX,[EDI]
>
> а я возникающее исключение ловлю,
> делаю
> mov EAX,0; например
> и передаю управление следующей после вызвавшей исключение
> команде этого долбанного драйвера:(
> --------
> что посоветуете?
> пропатчить Ntoskrnl не предлагайте:)

так как ты пишешь - это сделать можно
например:

1) кодишь свой драйверок
2) грузишь его после глючного драйвера, это в registry настраивается
3) в своем устанавливаешь exception handler перехватчики на то что нужно - GPF, PF etc
4) в своем handlere проверяешь по EIP в стеке откуда fault
5) если из глючного драйвера - то "передаешь управление следующей после вызвавшей исключение
> команде этого долбанного драйвера:( " - меня терзают смутные сомнения что это правильный ход это раз, большинство этих fault-ов будет рестартуемые поэто придется еще и вычислять этот "следующий адрес"
если Page Fault то видимо придется залазить в таблицу страниц для проверки - может это нормальный свопинг

но не проще ли разобраться с этим глючным драйвером один раз и пропатчить его как следует

если у тебя в soft-ice установлено faults on то тебя и выбросит в него после команды типа mov eax,ds:[0]
посмотреть почему так и исправить глюк
Всем спасибо! увы, SoftIce запустить не получится, на это есть причины 12.10.01 12:06  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
> если у тебя в soft-ice установлено faults on то тебя и
> выбросит в него после команды типа mov eax,ds:[0]
> посмотреть почему так и исправить глюк

дело в том, что сей баг только на работающей системе случается;
плата стоит у заказчика на работающей системе. вылетающий exception, как ни странно, не выводит систему из работоспособного состояния полностью, SoftIce же выведет и заказчик нас скушает не поморщившись.
стоит плата как чугунный мост:), купить для экспирементов не получится.

оказалось, что cb правильно отметил, что баг не в драйвере, а в библиотеке(dll),
обращающейся к этому драйверу.
при инициализации библиотеки она создает несколько потоков, в одном из них этот exception и вылетает.

еще раз всем спасибо, будем копать.
[Win32] можно ли повесить хук на обращение к определенному участку памяти? 12.10.01 08:56  
Автор: cb <cb> Статус: Member
<"чистая" ссылка>
> короче драйвер одного девайса глючит, вываливается окно с
> Exception:
> Access Violation.

судя по Exception ошибка происходит не в KernelMode - иначе синий экран гарантирован. скорее всего ошибка в какой-то dll предоставляющей доступ к драйверу.

> в связи с этим вопрос:
> можно ли отслеживать обращение чужой проги к определенному
> диапазону адресов, с целью обмануть ее.

можно попробовать загрузить свою dll в чужой процесс и поставить UnhandledExceptionFilter (см. SetUnhandledExceptionFilter) и при возникновении исключения найти место ошибки. если точно знать в каком потоке (thread) это происходит можно попытаться заюзать SEH.

cb.
[C++] [Win32] можно ли повесить хук на обращение к определенному участку памяти? 11.10.01 17:01  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Хе-Хе-Хе :))
Access violation это помоему обращение к не корректному участку памяти, например када указатель = 0
Помоему хуки здесь не помогут
слово "хук" я использовал некорректно. каюсь. увы, SEH не получается поюзать:)) 11.10.01 17:18  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
Если ты напишешь что-то подобное Softice, то сможешь сделать задуманное 11.10.01 17:43  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
А вообще-то я не совсем понял, НТ вываливается в синий экран с сообщением об ошибке или как.

P.S. Честно говоря, слабо представляю что можно придумать :-(
синего экрана нет, но это не сильно утешает:(( 11.10.01 17:59  
Автор: йцукенг <jcukeng> Статус: Member
<"чистая" ссылка>
синего экрана нет, но это не сильно утешает:(( 11.10.01 19:01  
Автор: access_denied Статус: Незарегистрированный пользователь
<"чистая" ссылка>
под Маздаем9х есть VMM-сервис Hook_PM_Fault, а также Hook_Invalid_Page_Fault. Вызываешь их из VxD,
и вешаешь свою Ring0-программу обработки. Под НТями не знаю и ДДК под рукой нету, сорри.
1




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


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