Русский / Russian English / Английский

Сейчас на форуме:
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Основной форум —› API Функция RaiseException или Команда процессора
Посл.ответ Сообщение

Ранг: 0.0 (гость)
Статус: Участник

Создано: 12 октября 2004 08:45 New!
Цитата · Личное сообщение · #1

В программе Actual Windows Manager я столкнулся с такой проблеммой:
Когда выполняется API функция RaiseException, регистр EIP становится не следующим после команды вызова, а неизвестно какой. Как узнать куда передается выполнение программы?
Или же на какой адрес передается выполнение программы после вызова команды процессора SYSENTER?



Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 12 октября 2004 23:59 New!
Цитата · Личное сообщение · #2

Ну дык описание RaiseException посмотрел бы.. В общем случае - будет вызван SEH обработчик, адрес можно в Olly увидеть View->SEH chain.
SYSENTER используется для вызова диспетчера ф-ций ядра в XP,
RaiseException в конечном счёте туды и идёт, оно те не нужно будет скорее всего.



Ранг: 0.0 (гость)
Статус: Участник

Создано: 13 октября 2004 05:54 New!
Цитата · Личное сообщение · #3

S_T_A_S_ описание RaiseException я пытался найти, дело в том, что если я что-то и находил, то там описывалось поверхностно и с этого описания нельзя было понять куда передается выполнение программы.
У меня OllyDbg v1.09d, там SEH chain нет. Если не затруднит, то напиши в каком сегменте и покакому смещению находится этот обработчик или как узнать адрес обработчика.
А SYSENTER это тоже самое что и int 2Eh, только на WinXP он запысывается как SYSENTER. Но куда идет переход после выполнения этого прерывания?



Ранг: 0.0 (гость)
Статус: Участник

Создано: 13 октября 2004 05:54 · Поправил: FOKUS New!
Цитата · Личное сообщение · #4

Может у кого-нибудь есть ссылки на подходящий матерьял?



Ранг: 384.1 (мудрец)
Статус: Участник
www.int3.net

Создано: 13 октября 2004 06:11 · Поправил: nice New!
Цитата · Личное сообщение · #5

FOKUS
Не обманывай дядюшек, все там есть:
Menu->View->SEH Chain

Только что посмотрел в 9д правда нет, сорри...


"Но куда идет переход после выполнения этого прерывания?" - в ядро ОС в 0 кольцо.
Это было расписано в книге:
Джеффри РИХТЕР. Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows.
http://alexsoft.home.nov.ru/download/prog/Richter__2004_10_06.rar http://alexsoft.home.nov.ru/download/prog/Richter__2004_10_06.rar



Ранг: 163.7 (ветеран)
Статус: Участник

Создано: 13 октября 2004 07:16 New!
Цитата · Личное сообщение · #6

FOKUS пишет:
в каком сегменте и покакому смещению находится этот обработчик или как узнать адрес обработчика.


Прога наверняка ставит свои обработчик(и), иначе зачем ей нужно RaiseException.
Почитай упаковщики #2 на wasm.ru, там есть про SEH.


FOKUS пишет:
SYSENTER это тоже самое что и int 2Eh, только на WinXP он запысывается как SYSENTER.


Это 2 различные команды, 0F 34 и CD 2E.
Ведут они в KiSystemService(). Подробнее есть у Шрайбера. Отлаживать мона айсом.


 eXeL@B —› Основной форум —› API Функция RaiseException или Команда процессора

Видеокурс ВЗЛОМ