Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: При восстановлении SST - бсод  (Прочитано 7949 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алиса
Гость
« : 23-07-2008 07:45 » 

Доброго дня!

снимаю перехват в функции DrvUnload так:
   __asm
   {
      cli                     
      mov eax, cr0
      mov CR0Reg,eax
      and eax,0xFFFEFFFF      
      mov cr0, eax
   }

    (NtUserSetWindowsHookExPtr )(
        (void **)(pServiceDescriptorTableShadow[1].Base)[0x225]) = (NtUserSetWindowsHookExPtr )TrueNtUserSetWindowsHookEx;

   __asm
   {
      mov eax, CR0Reg   
      mov cr0, eax           
      sti                   
   }
получаю бсод

Перехват работает нормально, но при восстановлении таблицы... фигня получается.
Может с контекстами связано!?
Поскажите, что(как)  делать.
Спасибо!
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 23-07-2008 12:17 » 

вообще наверное тут все сказано:
http://bugtraq.ru/library/programming/hookguard.html?k=9
P. S.

Если кто внимательно следит за новостями, то должен был обратить внимание на недавнюю шумиху по поводу новой технологии от Microsoft - Kernel Patch Protection, которая, как я понимаю, уже внедрена в новые обновления 64-х разрядных версий Windows (см: Kernel Patch Protection: больше вреда, чем пользы?, McAfee присоединилась к Symantec в атаках на Microsoft, McAfee и Symantec не удовлетворены действиями Microsoft). Так вот, в контексте наших рассуждений, очень уместно сообщить, что эта новая технология Kernel Patch Protection как-раз и защищает от модификаций описанные мною таблицы системных сервисов. При этом для таблицы системных сервисов рассчитывается контрольная сумма по некому определенному алгоритму, которая, как я понимаю, проверяется, при каждом вызове системного сервиса. Если одна из таблиц модифицированна (что собственно мы и делали) - система уходит в BSOD.


PPS а вообще... не расскажете с какой целью вам это необходимо? потому что очень уж на вирусописательство смахивает...
« Последнее редактирование: 23-07-2008 12:51 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Алиса
Гость
« Ответ #2 : 23-07-2008 13:44 » 

вообще наверное тут все сказано:
http://bugtraq.ru/library/programming/hookguard.html?k=9
PPS а вообще... не расскажете с какой целью вам это необходимо? потому что очень уж на вирусописательство смахивает...
нет, не вирусо... сделала прогу, перечисляющую установленные хуки (WH_***), какой либой установлены из какого приложения. при запуске моей проги создается листвьев, и в дальнейшем, чтобы обновлять список, хочу ловить set/unset хуков (обновлять по таймеру нехочу)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 23-07-2008 22:00 » 

хм... да... *поперхнулся бутербродом*.
это я от неожиданности.
ну вроде по той ссылке проблемма та же решается... и даже пример есть. может чем то поможет?
а так  - попробуй софтайсом каким нибудь отловить точку BSOD-a
это во время восстановления таблицы происходит или сама TrueNtUserSetWindowsHookEx вываливается?
впринципе судя по статье - могли и за два года действительно проверку на изменения внести... статья то 2006го.
но попробуй все таки пример из статьи запустить...
PS по поводу контекста - опять же софтайсом, попробуй сравнить состояние таблицы до твоих изменений, и перед тем как восстановить. поскольку контекст будет текущий - сможешь узнать, угадала или нет.
и наконец третье - быть может, в момент восстановления указателя какой то процесс в твоей, еще не обновленной функции выполняется? - это опять же в софтайсе по стеку вызовов проследить можно, либо spinlock-ами поиграть.
но софтайсом - надежнее)))


« Последнее редактирование: 23-07-2008 22:06 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 26-07-2008 18:30 » 

получилось что нибудь?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Алиса
Гость
« Ответ #5 : 28-07-2008 10:43 » 

получилось что нибудь?
да, получилось. я не атачилась к GUI-процессу, а надо было. звезда, блин.
спасибо, очькастенький Улыбаюсь)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 28-07-2008 14:05 » 

Круто!
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines