Здравствуйте! Объясните пожалуйста, кто может, что обозначает нижеследующее. При написании двух вариантов некоторой процедуры с созданием стекового фрейма и сложением в ней двух чисел, во втором варианте кода, в отладчике OllyDbg наблюдаются отличия в окне Дизассемблера, а именно отсутствие команды ret. Вариант 1 Код (Text): .686 .model flat, stdcall option casemap:none INCLUDE C:\Masm32\include\kernel32.inc INCLUDELIB C:\Masm32\lib\kernel32.lib .data sum DWORD ? .code Start: push 6 push 5 call AddDigs mov sum, eax INVOKE ExitProcess, 0 AddDigs PROC push ebp mov ebp, esp mov eax, [esp + 12] add eax, [esp + 8] pop ebp ret 8 AddDigs ENDP end Start Вариант 2 (Добавлена команда mov eax, 3) Код (Text): .686 .model flat, stdcall option casemap:none INCLUDE C:\Masm32\include\kernel32.inc INCLUDELIB C:\Masm32\lib\kernel32.lib .data sum DWORD ? .code Start: mov eax, 3 push 6 push 5 call AddDigs mov sum, eax INVOKE ExitProcess, 0 AddDigs PROC push ebp mov ebp, esp mov eax, [esp + 12] add eax, [esp + 8] pop ebp ret 8 AddDigs ENDP end Start
Дело в том, что олли сохраняет некоторую информацию об отлаживаемом файле между сеансами (что, вроде, можно отключить), посему при отладке модифицированного файла зачастую можно столкнуться с проблемами подобными вашей. ПКМ->Remove analysis, как написано выше, решит проблему.