Вы можете использовать функцию VirtualProtect
, чтобы сделать .text
раздел доступным для записи.
Обновление: в отношении угроз безопасности:
Как @Раймонд Чен написал, что страница чтения-записи-выполнения небезопасна.
Злоумышленник может использовать переполнение буфера таким образом, что он перезапишет указатель на другой буфер, а код злоумышленника будет скопирован на страницу чтения-записи-выполнения (RWX).
Но когда вы защищаете свою программу с помощью средства защиты программного обеспечения или просто упаковываете ее с помощью UPX, раздел кода становится доступным для записи.И некоторые популярные коммерческие защитники не делают его обратно без записи.Забавно, если в вашем словаре есть DLL, которая загружается в каждый процесс, и в нем есть разделы RWX.
Я не хочу сказать, что если существует много «защищенных» программ, которым все равнонасчет памяти RWX, так что тебя тоже не волнует.Я просто хочу отметить, что механизмы защиты, такие как DEP, несколько переоценены.
Относительно вопроса OP.
Я не думаю, что это хорошая идея - писать реальные приложения на ассемблере, особенно в Windows, вРежим.Но нормально писать на ассемблере в образовательных целях.И нет ничего плохого в написании программы сборки длиной 100 строк с записываемым фрагментом кода.