linux下取消页读写保护

来源:互联网 发布:开源 微信公众号 php 编辑:程序博客网 时间:2024/06/05 21:11
Some people modify the page table entry data for read-only pages theywant to modify, but the following functions I have provided are muchsimpler, and an example will be provided below./* FUNCTION TO DISABLE WRITE PROTECT BIT IN CPU */static void disable_wp(void){        unsigned int cr0_value;                asm volatile ("movl %%cr0, %0" : "=r" (cr0_value));                /* Disable WP */        cr0_value &= ~(1 << 16);                asm volatile ("movl %0, %%cr0" :: "r" (cr0_value));}        /* FUNCTION TO RE-ENABLE WRITE PROTECT BIT IN CPU */static void enable_wp(void){        unsigned int cr0_value;        asm volatile ("movl %%cr0, %0" : "=r" (cr0_value));        /* Enable WP */        cr0_value |= (1 << 16);        asm volatile ("movl %0, %%cr0" :: "r" (cr0_value));}==========================================================================================================================================================
int set_page_rw(long unsigned int _addr){    return set_memory_rw(PAGE_ALIGN(_addr) - PAGE_SIZE, 1);}int set_page_ro(long unsigned int _addr){    return set_memory_ro(PAGE_ALIGN(_addr) - PAGE_SIZE, 1);}