Дизассемблированный код функции main с Рисунок Дизассемблер IDA PRO
Рисунок 4.5.8. Дизассемблированный код функции main с Рисунок 4.5.7. Дизассемблер IDA PRO.
Как видите, получившийся код достаточно сложен. Я не намерен проводить его детальный анализ, т.к. в этом случае нам пришлось бы включать в него и анализ библиотечных программ. Остановимся только на некоторых ключевых моментах.
Приведу теперь фрагмент той же дизассемблированной программы, но с использованием опции -x, что для транслятора Borland C++ означает - не использовать исключения. Как видите, текст программы оказался значительно проще.
.text 00401122 _main proc near ; DATA XREF: .data:0040B0C8 .text 00401122 .text 00401122 argc = dword ptr 8 .text 00401122 argv = dword ptr 0Ch .text 00401122 envp = dword ptr 10h .text 00401122 .text 00401122 push ebp .text 00401123 mov ebp, esp .text 00401125 push ebx .text 00401126 push 12Ch .text 0040112B call unknown_libname_8 .text 00401130 pop ecx .text 00401131 mov ebx, eax .text 00401133 test eax, eax .text 00401135 jz short loc_40115D .text 00401137 push offset aPrivet ; src .text 0040113C push ebx ; dest .text 0040113D call _strcpy .text 00401142 add esp, 8 .text 00401145 push offset aPrivet_0 ; src .text 0040114A lea edx, [ebx+0C8h] .text 00401150 push edx ; dest .text 00401151 call _strcpy .text 00401156 add esp, 8 .text 00401159 mov ecx, ebx .text 0040115B jmp short loc_40115F .text 0040115D ;-----------------———-—----—-—---——— .text 0040115D .text 0040115D loc_40115D: ; CODE XREF: _main+13 .text 0040115D mov ecx, ebx .text 0040115F .text 0040115F loc_40115F: ; CODE XREF: _main+39 .text 0040115F mov ebx, ecx .text 00401161 push ebx ; dest .text 00401162 call sub_401108 .text 00401167 pop ecx .text 00401168 push ebx ; char .text 00401169 push offset aS ; _va_args .text 0040116E call _printf .text 00401173 add esp, 8 .text 00401176 push ebx ; handle .text 00401177 call _rtl_close .text 0040117C pop ecx .text 0040117D xor eax, eax .text 0040117F pop ebx .text 00401180 pop ebp .text 00401181 retn .text 00401181 _main endp