Помимо правильного использования mprotect
для предоставления разрешения на первую запись и последующее выполнение, при некоторых операциях с ОС / оборудованием вам может потребоваться очистка I-кэша . На данный момент (середина 2010 г.) все последние процессоры x86 имеют отдельные кэши уровня 1 для инструкций и данных, и кто-то должен убедиться, что если вы запишите новые инструкции в память (которая обновит D-кэш), вы Затем попробуйте выполнить устаревшие биты из I-кэша. Как именно очистить I-кеш от пространства пользователя, будет зависеть как от вашего оборудования, так и от операционной системы. Я бы посоветовал прочитать документацию Intel по "самоизменяющемуся коду" для своих мультипроцессоров IA-32. Этого должно быть достаточно, чтобы помочь вам.