mprotect 函数

来自AD之WW例子:

查找core文件的一种方法,将某指针置未只读,当改变时core。

struct mem_t
{
   char i;
   char j;
   char reserved[1024 * 4];
   fuc func;
   char reserved1[1024 * 4];
};

int main(int argc, char** argv)
{
    extern int errno;
    struct mem_t* mem = (struct mem_t*)malloc(sizeof(struct mem_t));
    mem->func = (fuc)0xFFFF;
    void* p = &mem->func;
    if(mprotect((void*)(unsigned long(p) & (~PAGESIZE - 1)), 1024, PROT_READ) == -1)
    {
        printf("%d\n", errno);
        return 0;
    }
    mem->i = 1;
    mem->j = 2;
    mem->func = (fuc)0xFFEE;
    printf("%x\n", mem->func);
    return 1;
}


通过 PROT_READ 设置以后, i , j 变量可以正常写, func变量写时就会core 掉。

 

还有一篇关于 mprotect: 设置内存访问权限,可以参考:

http://blog.csdn.net/ustc_dylan/article/details/6941768

你可能感兴趣的:(linux,C)