Linux 使用gdb更改页面权限
我在玩gdb,我想设置从特定页面删除可执行文件的权限。我怎么能这样做呢?我不需要在gdb中这样做,只是我想以某种方式更改权限(只要不修改二进制文件的源代码就可以了) [编辑] 我正在寻找一种解决方案,该解决方案适用于未链接到libc的二进制文件。使用mprotect():Linux 使用gdb更改页面权限,linux,gdb,Linux,Gdb,我在玩gdb,我想设置从特定页面删除可执行文件的权限。我怎么能这样做呢?我不需要在gdb中这样做,只是我想以某种方式更改权限(只要不修改二进制文件的源代码就可以了) [编辑] 我正在寻找一种解决方案,该解决方案适用于未链接到libc的二进制文件。使用mprotect(): 您可以在gdb中调用它,比如call mprotect(addr,len,3),其中3是PROT_READ | PROT_WRITE(至少在我的系统上)的数值。即使二进制文件没有使用libc,它也必须执行至少一个系统调用才能执
您可以在gdb中调用它,比如
call mprotect(addr,len,3)
,其中3
是PROT_READ | PROT_WRITE
(至少在我的系统上)的数值。即使二进制文件没有使用libc,它也必须执行至少一个系统调用才能执行任何有用的操作
然后,您需要做的是在堆栈或寄存器中安排正确的参数(处理器和操作系统之间的细节不同,并且您还没有告诉我们您在哪个操作系统上运行),然后跳转(使用GDBjump
命令)到syscal指令
例如,在
Linux/x86\u 64
上,您会将10
(\uu NR\u mprotect
)放入%rax
,添加到%rdi
,len
放入%rsi
,以及3
放入%rdx
。请参阅文档。但我想,对于未链接到libc的二进制文件(例如:从不使用libc的程序集创建的二进制文件)来说,这可能是真的,但您现在只是告诉我们您的二进制文件未链接到libc,这让我很难过。抱歉,我感谢您的建议,谢谢您的时间。