mprotect

引数addrのアドレスから、引数lenの長さのメモリ領域のアクセス保護を、引数protの状態に変更。

#include < sys/mman.h >
#include < unistd.h >
#include < stdio.h >

int main(){
    size_t pagesize;
    char *mp;
    
    pagesize = getpagesize();
    
    mp = mmap(0, pagesize, PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
    if (mp == MAP_FAILED){
        perror("mmap");
        return 1;
    }
    
    if (mprotect(mp, pagesize, PROT_READ) < 0){
        perror("mprotect");
        return 1;
    }
    
    *mp = 1;
    return 0;
}