机器代码JIT和执行禁用位


10

如果CPU / OS具有“执行禁用”位,运行时生成的机器代码(例如JIT的输出)如何由CPU实际执行?

据我所知,许多现代处理器和操作系统包括用于支持NX位,(包括Intel和ARM),这防止了机器代码被存储在任何地址其它不是从正在执行的编译的二进制的代码部分。显然,这是一个不错的安全优势,因为它可以防止外壳代码注入攻击。

但是,如何动态生成机器代码的JIT引擎(如LLVM)如何解决这一问题?


看一下Memory :: allocateMappedMemory的实现,看看它如何在LLVM中完成。- 对于* nix中 - 对于Windows
ZR01

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.