"Рассмотрим типичную архитектуру Windows x86 или AMD64, память разделена на исполняемые разделы, в которые невозможно записать данные, и разделы данных, в которые можно записать, но не выполнить (подумайте DEP)."
"JIT компилирует методы в памяти, (обычно) ничего не сохраняет на диск, вместо этого перемещает его туда, куда может попасть указатель следующей инструкции, изменяет текущий указатель инструкции (указывающий на JIT), чтобы он указывал на вновь сгенерированныйкод, а затем выполняет его. "
Эти два абзаца, хотя и немного упрощенные, - это то, что я в основном понимаю в JIT и в модели памяти Windows.Я также знаю, что когда я пытаюсь вручную скопировать некоторый исполняемый код в память и попытаться выполнить его, я, как правило, не смогу это сделать (кроме случаев, когда используется DLL-инъекция).
Как JIT-дизайнеры преодолели это препятствие?Они используют драйвер ring-0 или все делается в пользовательском режиме?