Вот

трю на написание JIT-компилятора для виртуальной машины, над которой я недавно работал. Я немного знаю ассемблер, (я в основном программист на Си. Я могу читать большинство ассемблеров со ссылками на коды операций, которые я не понимаю, и пишу несколько простых программ.) Но мне трудно понять несколько примеров самоизменяющегося кода, который я нашел в Интернете.

Это один из таких примеров:http://asm.sourceforge.net/articles/smc.html

Приведенная программа-пример выполняет около четырех различных модификаций при запуске, ни одна из которых четко не объясняется. Прерывания ядра Linux используются несколько раз и не объясняются и не детализируются. (Автор переместил данные в несколько регистров перед вызовом прерываний. Я предполагаю, что он передавал аргументы, но эти аргументы вообще не объясняются, оставляя читателя угадывать.)

То, что я ищу, - это самый простой, самый простой пример в коде самоизменяющейся программы. Кое-что, на что я могу взглянуть и использовать, чтобы понять, как должен быть написан самоизменяющийся код в сборке x86, и как он работает. Есть ли какие-либо ресурсы, на которые вы можете указать мне, или какие-либо примеры, которые вы можете привести, которые бы адекватно продемонстрировали это?

Я использую NASM в качестве моего ассемблера.

РЕДАКТИРОВАТЬ: я также запускаю этот код в Linux.

Ответы на вопрос(1)

Ваш ответ на вопрос