替代mprotect()

Ath*_*rva 3 c memory protection

mprotect系统调用保护页面边界内的内存区域:

int mprotect(void *addr, size_t len, int prot);
Run Code Online (Sandbox Code Playgroud)

这里len应该是pagesize的倍数.

有没有办法只保护几个连续的地址,这些地址没有与页面边界对齐,即len < pagesize

unw*_*ind 5

我不这么认为,不.这个限制是因为MMU对它可以控制的粒度有多么精确.有些表保存访问限制,每个字节不能有表槽; 表本身会使用你所有的RAM.因此,它变得更粗糙,每个页面都有表条目.

如果您使用的是Linux,那么您可以使用Valgrind做一些事情.