mprotect

mprotect可以修改一个区域的权限

  • void mprotect(void *address, size_t length, int prot);
  • address: 这是要操作的内存区域的起始地址。通常是一个 void 指针,可以指向任何类型的数据。
  • length: 这是要操作的内存区域的长度,以字节为单位。表示从起始地址开始,需要保护或更改的字节数。
  • prot: 这是指定内存区域的保护属性的参数。可以使用以下常量之一来指定保护属性: PROT_NONE、PROT_READ、PROT_WRITE 和 PROT_EXEC 常量分别对应的数字值是: PROT_NONE: 0 PROT_READ: 1 PROT_WRITE: 2 PROT_EXEC: 4 这些数字值可以通过按位或运算来组合,例如,如果要设置读、写、和执行权限,可以使用: 果要设置读、写、和执行权限,prot 的值将为 7

mprotect的地址要0x1000的倍数,要页对齐,length最好就是0x1000 mprotect(0x601000,0x1000,7)