Найти, если два объекта совпадают

Когда вы покидаете «ret», компьютер выполняет последний «move eax, ebx», а затем выполняет все, что будет дальше в памяти компьютера.

Я удивлен, что вы не получить незаконную инструкцию / доступ; это будет самый общий ответ. Как-то инструкция мусора действует как возврат, после разгрома регистров.

Его также немного непонятно, что вы подразумеваете под «возвращает 60». Вы имеете в виду значение командной строки? Понятно, что ваша программа не защищает от незаконных ловушек. Что делает Windows, когда вы получаете такую ​​ловушку без защиты, мне непонятно; Я знаю по опыту, когда я делаю, что Windows имеет тенденцию просто прекратить мой процесс, и я получаю некоторый случайный статус выхода. «0» может быть таким статусом.

Попробуйте добавить:

      mov   byte ptr[eax], 0

перед командой «ret»; это приведет к нелегальной памяти. Вы сообщаете, какой статус вы получаете. Это не удивило бы меня, если бы вы получили нулевой результат в этом случае.

0
задан Tavo 22 February 2015 в 18:04
поделиться