Сейчас на форуме: ==DJ==[ZLO], Magister Yoda, Rio (+6 невидимых) |
eXeL@B —› Основной форум —› ::Гипотезы:: |
Посл.ответ | Сообщение |
|
Создано: 09 февраля 2005 11:43 · Личное сообщение · #1 Рискну предположить: 1. Что если, стоя на ЕР, флаг DF выставить в единицу, то прога при запуске или работе упадет. 2. Если длл запакована, то после распаковки надо восстанавливать все ее регистры и стэк, который был в начале, иначе упадет (у ехе можно особо за этим не следить). 3. Как после SEH восстановить стэк, на тот, который был до него, а также регистры? |
|
Создано: 09 февраля 2005 13:22 · Личное сообщение · #2 FEUERRADER пишет: 1. Что если, стоя на ЕР, флаг DF выставить в единицу, то прога при запуске или работе упадет. ну и ? =) думаю выставленный флаг TF прогу тоже не сильно обрадует ;) FEUERRADER пишет: 3. Как после SEH восстановить стэк, на тот, который был до него, а также регистры? тоесть ? там и так всё восстанавливается с учётом изменений которые внутри обработчика были внесены в структуру context... а уж что там было изменено - это зависит от обработчика. |
|
Создано: 09 февраля 2005 17:51 · Поправил: S_T_A_S_ · Личное сообщение · #3 |
|
Создано: 09 февраля 2005 18:58 · Поправил: MoonShiner · Личное сообщение · #4 2. Ну ясно про стек, если посмотреть, как либа возвращает (должна возвращать=) управление после инициализации. 3. Система сама восстановит из контекста значение всех регистров. Естественно, если ты вернешь ей управление... А так - структура контекста расписывается здесь http://wiki.forth.org.ru/StructuredExceptionsHandling http://wiki.forth.org.ru/StructuredExceptionsHandling или в windows.inc. Т.е. запросто можно вытащить ручками значение всех регистров и даже Drx=). Т.е. если обработчик исключений у тебя состоит из mov eax,ExceptionContinueExecution ret, то управление вернется на инструкцию, вызвавшую исключение с восстановлением первоначальной картины (регистры, стек и т.д.), даже если в обработчике ты будешь усиленно извращаться со значениями регистров (кроме esp,ebp). Здесь возможны мелкие нюансы, но они не суть важны. |
eXeL@B —› Основной форум —› ::Гипотезы:: |