Поставлю вопрос подругому. Есть дарайвер где применяются процедуры __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 статью смотрел, но вопросы остались