NX 位仿真

发布于 2024-10-12 15:34:04 字数 90 浏览 9 评论 0原文

有人可以向我解释一下如何在 32 位 x86 等硬件不提供的平台上模拟 NX 位吗?我非常乐意解释它的模拟方式的基础知识,因为我根本无法想象它是如何实现的。提前致谢。

Could someone explain to me how the NX bit can be emulated on platforms such as 32-bit x86 where the hardware doesn't provide it? I would be greatful for an explanation of the basics of the way it is emulated since I simply can't imagine how it could be realized. Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不顾 2024-10-19 15:34:04

您可能想阅读Exec ShieldPaX PAGEEXECPaX SEGMEXEC

You might want to read about Exec Shield, PaX PAGEEXEC and PaX SEGMEXEC.

蓝眼泪 2024-10-19 15:34:04

我从未实现过 NX 仿真,但了解一些有关 x86 的知识是我对其工作方式的最佳猜测。

这一切都与内核如何设置全局描述符表来定义地址范围有关可能包含代码。

如果我可以不优雅地总结一下......在 32 位保护模式下的 x86 上,16 位代码中那些旧的“段寄存器”仍然有一定的意义。段寄存器决定使用 GDT 中的哪个条目。 GDT 条目本质上是一个内存范围。如果内核将cs(代码段)寄存器指向仅具有范围[x,y]内的地址的GDT条目,则该范围之外的地址是不可执行的。

请注意,这比 NX 位更粗粒度,因为 NX 位位于页表 条目。因此,NX 位允许您将任意页面标记为不可执行,而使用 cs 段只能让您指定一个(通常很大、连续的)范围为不可执行。

I've never implemented NX emulation, but knowing something about x86 here's my best guess of how it can work.

It all has to do with how the kernel sets up your global descriptor table to define what range of addresses may contain code.

If I may summarize it inelegantly... On x86 in 32-bit protected mode, those old "segment registers" from 16-bit code still have some meaning. The segment registers determine which entry in the GDT is used. The GDT entries are essentially a memory range. If the kernel points the cs (code segment) register at a GDT entry that only has addresses in range [x, y], then addresses outside that range are non-executable.

Note that this is much more coarse-grain than an NX bit, because the NX bit goes in the page table entry. So the NX bit lets you mark an arbitrary page as non-executable, whereas using cs segments only let you specify a (usually vary large, contiguous) range as non-executable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文