Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio, Dart Raiden, Alf (+5 невидимых)

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

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

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

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



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

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

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



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

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

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



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

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

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



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

Создано: 13 октября 2004 06:11 · Поправил: nice
· Личное сообщение · #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 (ветеран)
Активность: 0.070
Статус: Участник

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

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


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


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


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


 eXeL@B —› Основной форум —› API Функция RaiseException или Команда процессора
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати