【问题标题】:Linux equivalent for VirtualProtectEx?VirtualProtectEx 的 Linux 等效项?
【发布时间】:2010-09-27 02:36:17
【问题描述】:

我正在做一些简单的JITing,并在Windows 下使用VirtualProtectEx 将页面标记为可执行。 在 Linux 下,最好是在其他类似 POSIX/Unix 的操作系统下有什么等价物?

【问题讨论】:

    标签: linux jit data-execution-prevention


    【解决方案1】:

    您正在寻找mprotect 并且可能也在寻找mmap。请注意,与 Windows 不同,进程 A 无法更改进程 B 的内存映射(缺少 ptrace 的可怕技巧)。

    【讨论】:

    • ...请记住,某些强化内核会阻止您同时设置写入和执行权限 (PROT_WRITE | PROT_EXEC)。
    • 是的,进程也可以通过映射它们的 /proc/pid/mem 的一部分来改变彼此的内存
    • MarkR:进程可以使用 /proc/pid/mem 或各种其他标准 API(shm*mmapMAP_SHARED写入彼此的内存,等等),但这不是我所说的“不能改变另一个进程的内存映射”的意思。 VirtualProtectEx 和它的朋友可以让你在另一个进程的地址空间中更改页面权限或分配/释放内存;这就是在 Unix 上如果没有肮脏的技巧就无法做到的。 (奇怪的是,除非我遗漏了什么,Windows 不允许您对除您自己以外的任何人执行 MapViewOfFile(Ex) 操作。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2018-11-26
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多