Вопрос по SEH

Тема в разделе "WASM.BEGINNERS", создана пользователем Denis__, 15 апр 2006.

  1. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    Есть ли а кого нибудь пример использования __try __except, на асме. За ранее благадарен.
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Denis__

    Статьи погляди, на данном сайте и по сурцам по бегай
     
  3. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  4. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    Поставлю вопрос подругому.



    Есть дарайвер где применяются процедуры __try __except. Здесь код выдранный из него.

    Пытаюсь разобраться с ним.





    push 0Ch <---------------------------------------------------!

    push offset bla --- собственно помещаем в стек 0FFFFFFFFh !

    call __SEH_prolog

    !

    !

    __SEH_prolog: !



    arg_4 = dword ptr 8 - что это за переменная

    !

    push offset __except_handler3 - Адрес функции обработчика исключений

    mov eax, large fs:0 - Адрес предыдущего EXECEPTION_REGISTRATION !

    push eax -

    mov large fs:0, esp - fs:[0] - указатель на новый EXECEPTION_REGISTRATION !

    mov eax, [esp+8+arg_4] - в eax - 0Ch ----------------------------------

    mov [esp+8+arg_4], ebp

    lea ebp, [esp+8+arg_4] - lea ebp,[ebp]

    sub esp, eax

    push ebx

    push esi

    push edi

    mov eax, [ebp-8] - mov eax, [ebp+_scopetable]

    mov [ebp-18h], esp - mov [ebp+_saved_esp], esp

    push eax

    mov eax, [ebp-4] - mov eax,[ebp+_trylevel]

    mov dword ptr [ebp-4], 0FFFFFFFFh - mov dword ptr[ebp+_trylevel],0FFFFFFFFh

    mov [ebp-8], eax - mov [ebp+_scopetable],[ebp+_trylevel]

    lea eax, [ebp-10h] - lea eax, [ebp+_next]

    mov large fs:0, eax

    retn





    1. как я понимаю команды: mov eax, large fs:0

    push eax

    эквивалентны: push large fs:0



    2. Чего мы добились манипуляциями с: sub esp, eax

    или sub esp,0Ch

    Зачем все это?



    arg_4 = dword ptr 8 - это что это за переменная?



    crypto

    статью смотрел, но вопросы остались
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Denis__

    1. да

    2. размер seh-фрейма.

    3. указатель на arg_4.

    4. разбирайся шаг за шагом