Comment le code machine généré par l'exécution (comme la sortie d'un JIT) est-il réellement exécuté par la CPU si la CPU / OS a un bit de désactivation d'exécution?
Pour autant que je sache, de nombreux processeurs et systèmes d'exploitation modernes incluent la prise en charge d'un bit NX (y compris Intel et ARM), ce qui empêche l' exécution du code machine stocké à toute adresse autre que la section de code d'un binaire compilé. De toute évidence, il s'agit d'un bel avantage de sécurité, car il empêche les attaques par injection de code shell.
Mais comment les moteurs JIT, comme LLVM, qui génèrent dynamiquement du code machine, peuvent-ils contourner cela?