Сейчас на форуме: Rio, YDS (+10 невидимых)

 eXeL@B —› Основной форум —› Помогите разобраться с SEH
Посл.ответ Сообщение

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

Создано: 24 апреля 2006 13:58
· Личное сообщение · #1

Всем привет!
Я занимаюсь написанием утилиты по автоматической распаковке запакованных файлов,
справился с WinUpack, NsPack, UPX, PeCompact, AsPack, Fsg и некоторыми другими.
Столкнулся со следующей проблемой:

где можно найти подробную инфу по много каскадным SEH?
статей на wasm.ru не достаточно.

В PeCompactе применяются seh, но однокаскадные, а если взятьYoda то сразу кранты
справиться не могу.

Еще проблема не могу разобраться что и в какой последовательности Windows помещает в стек
при возникновении исключения?

Заранее благодарен !!!



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

Создано: 24 апреля 2006 14:10
· Личное сообщение · #2

Еще сопутствующий вопрос:
в док-ции по seh написано, если обработчик возвратил EXCEPTION_CONTINUE_SEARCH = 0,
то попробывать обработать исключение следующим обработчиком,
НО в PeCompact-e возникает исключение, после обработке, которого возвращается 0, но передать управление нужно программе.
В чем прикол?



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 14:36
· Личное сообщение · #3

mag3d пишет:
EXCEPTION_CONTINUE_SEARCH = 0

0 = EXCEPTION_CONTINUE_EXECUTION
push SEH_frame
push dword [fs:0]
mov dword [fs:0], esp
int 3
<...>
SEH_frame:
mov eax, [esp+0Ch]
inc dword [eax+0B8h]
xor eax, eax
retn 4*4
И всё нормально работает.
Держи аттач, надеюсь английский знаешь хорошо, там даже про процесс передачи информации об исключении в отладчик и приложение есть (UnhandledExceptionFilter, BaseProcessStart - их псевдокоды) а также способы обнаружения отладчиков.


586e_24.04.2006_CRACKLAB.rU.tgz - SEHall.rar




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 24 апреля 2006 14:43
· Личное сообщение · #4

www.wasm.ru/article.php?article=Win32SEHPietrek1
www.wasm.ru/article.php?article=Win32SEHPietrek2
www.wasm.ru/article.php?article=Win32SEHPietrek3
www.wasm.ru/article.php?article=green2red03

-----
Yann Tiersen best and do not fuck




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

Создано: 24 апреля 2006 14:49
· Личное сообщение · #5

аттач содержит исходники статьи с wasm.ru



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

Создано: 24 апреля 2006 15:08
· Личное сообщение · #6

В статье: www.wasm.ru/article.php?article=green2red03
по поводу возврата управления идет путаница:
в рачале он говорит, что:
eax = 1 - ОС вызывает следующий обработчик в цепочке
eax = 0 - перезагружаем контекст и продолжаем,

далее по тексте идет путаница:
Обработчик возвращает 1 или константу ExceptionContinueExecution, чтобы сообщить операционной системе, что обработчик обработал исключение и необходимо продолжить выполнение программы в контексте указанной в структуре CONTEXT.

Так как правильно?
И мне непонятно всегда ли управление передается по занчением записанным в структуре CONTEXT,
или есть другие случае (в случае если исключение обработано)?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 24 апреля 2006 15:10
· Личное сообщение · #7

mag3d ты не понял. Есть два вида SEH. Один локалный а второй финальный. И для каждого коды разные.

-----
Yann Tiersen best and do not fuck




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

Создано: 24 апреля 2006 15:40
· Личное сообщение · #8

Хорошая статья:
www.wasm.ru/article.php?article=GordonExcept

Всем спасибо !!!



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 16:50
· Личное сообщение · #9

Да, кстати, а VEH посмотреть не хочешь? В WinXp уже Vectored Exception Handler есть.
см. здесь: www.microsoft.com/rus/msdn/magazine/archive/2003-06/core_api_full.asp <--



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 16:51 · Поправил: NullSession
· Личное сообщение · #10

[блин, пост дублировался, почему-то была ошибка "Сервер не найден". Удалите моедраторы пожалуйста.]



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 24 апреля 2006 20:25
· Личное сообщение · #11

NullSession

второй раз говорю, SE Handler должен быть cdecl, иначе будет падать под 9x



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 21:41
· Личное сообщение · #12

Asterix
Да, retn должно быть без последующих параметров. То есть не "retn 4", а "retn". А в первый раз ты это мне на васме говорил что ли?



Ранг: 450.1 (мудрец)
Активность: 0.260
Статус: Участник

Создано: 24 апреля 2006 21:48
· Личное сообщение · #13

NullSession пишет:
А в первый раз ты это мне на васме говорил что ли?






Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 апреля 2006 05:20
· Личное сообщение · #14

Ну да точно.
Имхо топик закрывать надо, ошибки исправлены, а mag3d ответы нашёл.


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


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