【问题标题】:where is the executable bit in page table entry?页表条目中的可执行位在哪里?
【发布时间】:2013-10-29 11:08:51
【问题描述】:

这是来自英特尔架构手册的图。 在 x86 32 位页表条目中,位在哪里 哪个表示页面是否可执行?

如果它不在这里,操作系统如何为 exec 设置内存权限? 有 mmap 之类的功能吗?

【问题讨论】:

    标签: linux operating-system paging


    【解决方案1】:

    AFAIK,如果页面可读,则页面是可执行的,因此它们都是可执行的。但是,您在这里可能会想到的是,有些页面设置了非执行位。嗯,这是一个软件破解,从内核完成。引入这种技术是为了避免基于 stackoverflow 的攻击,方法是使特定页面(vm 区域)不可执行。

    【讨论】:

    • 感谢您的回答。你说'软件黑客',你能更具体一点吗?我很好奇如何在没有硬件支持的情况下进行管理。因为除非有硬件中断,否则操作系统不能干扰应用程序的指令执行。那么,如果一个应用程序在某个可执行页面中运行他/她的代码,并且 EIP 跳转到一个不可执行页面,操作系统如何拦截它并使其在正确的时刻停止?
    • 嗯,你可以找到它pax.grsecurity.net/docs/pageexec.txt,这个文档解释了一切。
    • 谢谢!该文档让我彻底了解了如何实现 NX!
    猜你喜欢
    • 2011-04-26
    • 2019-02-24
    • 1970-01-01
    • 2016-08-17
    • 2016-06-30
    • 2015-05-26
    • 2019-10-30
    • 1970-01-01
    • 2018-11-28
    相关资源
    最近更新 更多