#include #include #include int main(void) { void*addr=(void*)0x20000000; mmap(addr,0x1000000,PROT_READ|PROT_WRITE,MAP_ANONYMOUS,-1,0); struct rlimit rlim; rlim.rlim_cur=rlim.rlim_max=1; setrlimit(RLIMIT_MEMLOCK,&rlim); mlockall(MCL_FUTURE); mprotect((void*)((intptr_t)addr+0x00ffb000),0x4000,PROT_NONE); mprotect((void*)((intptr_t)addr+0x00ffb000),0x2000,PROT_READ); mprotect((void*)((intptr_t)addr+0x00ffa000),0x4000,PROT_WRITE); *((char *)((intptr_t)addr+0x0ffa000)) = 0x42; return 0; }