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

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

пишу драйверок, в котром хукаю пару функций.
так вот хукаю так:

cli;
mov eax, cr0;
and eax, 0xFFFEFFFF;
mov cr0, eax;

Дизассемблирую код и заменяю первые иснрукции на JMP на мой враппер.

mov eax, cr0;
or eax, 0x00010000;
mov cr0, eax;
sti;

Сама проблема: под 2к все пашет, ф-ции хукаются и никаких траблов. А вот под XP синий BSOD, естествено валится в том месте где я меняю код (JMP вставляю).

ДЕТАЛИ: Система не многопроцессорная, проц без гиперсрединга. Прежде чем вставить JMP я дезассемблирую код. Дизассемблер тоже проверенный, правда под ЮзерМодом, да и в ядре под 2к ведь все работает.

В чем ньюансы? Спецы откликнетесь...
Записан
Greysfi
Гость
« Ответ #1 : 04-12-2006 13:20 » 

Может краш дамп покажешь? BSOD это ведь даже не плохо Улыбаюсь
Записан
sasha_s7
Гость
« Ответ #2 : 04-12-2006 13:42 » 

Тебе мемори дамп выслать? Улыбаюсь
Записан
Greysfi
Гость
« Ответ #3 : 04-12-2006 13:47 » 

Не не сам файл. А последнии инструкции и стек. Посмотри отладчиком Улыбаюсь
Записан
sasha_s7
Гость
« Ответ #4 : 04-12-2006 14:08 » 

впринципе яж все описал, но вот еще

верхние три записи стека:

nt!KiTrap0E
hooknt!hook_all
hooknt!DriverDispatch

в KiTrap0E вызывается KeBugCheck2;
hooknt мой драйверок, в hook_all идет перехват ф-ций, иснструкция на которой падает примерно такая:

buf[0] = 0xE9;
далее пишем адресс для джампа, но записи 0xE9 уже достаточно
где buf = (PCHAR)(адресс нужной ф-ции, ну скажем ZwWriteFile...)
Записан
Greysfi
Гость
« Ответ #5 : 04-12-2006 14:20 » 

Не раз у тебя что то упало то у тебя должен получиться краш дамп и в нем нужно смотреть причину.
Записан
sasha_s7
Гость
« Ответ #6 : 04-12-2006 14:32 » 

ясно... я уже этот краш дамп глазами протер насквозь. Где падает знаю, а вот почему никто не могет сказать.
Записан
Greysfi
Гость
« Ответ #7 : 04-12-2006 14:42 » 

так вот и пришли его посмотреть Улыбаюсь
Записан
sasha_s7
Гость
« Ответ #8 : 04-12-2006 14:47 » 

192 Мб... Слать тебе?
Записан
Greysfi
Гость
« Ответ #9 : 04-12-2006 14:54 » 

нет я говорю о том чтобы дизассемблированные последнии команды. Стек и все такое сюда распечатать. Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines