Яким чином машинний код, сформований під час виконання (наприклад, вихід JIT), насправді виконується ЦП, якщо CPU / OS має біт відключення виконання?
Наскільки я знаю, багато сучасних процесори і операційні системи включають підтримку для NX біт (включаючи Intel і ARM), що захищають машинний код , який зберігається в будь-якому адресу іншої , ніж секції коди скомпільованої виконуваного файлу з виконуються. Зрозуміло, що це приємна перевага безпеки, оскільки воно запобігає атакам інжекцій оболонки.
Але як же обходити це двигуни JIT, як LLVM, які динамічно генерують машинний код?