Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用gdb更改页面权限_Linux_Gdb - Fatal编程技术网

Linux 使用gdb更改页面权限

Linux 使用gdb更改页面权限,linux,gdb,Linux,Gdb,我在玩gdb,我想设置从特定页面删除可执行文件的权限。我怎么能这样做呢?我不需要在gdb中这样做,只是我想以某种方式更改权限(只要不修改二进制文件的源代码就可以了) [编辑] 我正在寻找一种解决方案,该解决方案适用于未链接到libc的二进制文件。使用mprotect(): 您可以在gdb中调用它,比如call mprotect(addr,len,3),其中3是PROT_READ | PROT_WRITE(至少在我的系统上)的数值。即使二进制文件没有使用libc,它也必须执行至少一个系统调用才能执

我在玩gdb,我想设置从特定页面删除可执行文件的权限。我怎么能这样做呢?我不需要在gdb中这样做,只是我想以某种方式更改权限(只要不修改二进制文件的源代码就可以了)

[编辑] 我正在寻找一种解决方案,该解决方案适用于未链接到libc的二进制文件。

使用mprotect():


您可以在gdb中调用它,比如
call mprotect(addr,len,3)
,其中
3
PROT_READ | PROT_WRITE
(至少在我的系统上)的数值。

即使二进制文件没有使用libc,它也必须执行至少一个系统调用才能执行任何有用的操作

然后,您需要做的是在堆栈或寄存器中安排正确的参数(处理器和操作系统之间的细节不同,并且您还没有告诉我们您在哪个操作系统上运行),然后跳转(使用GDB
jump
命令)到syscal指令


例如,在
Linux/x86\u 64
上,您会将
10
\uu NR\u mprotect
)放入
%rax
添加到
%rdi
len
放入
%rsi
,以及
3
放入
%rdx
。请参阅文档。

但我想,对于未链接到libc的二进制文件(例如:从不使用libc的程序集创建的二进制文件)来说,这可能是真的,但您现在只是告诉我们您的二进制文件未链接到libc,这让我很难过。抱歉,我感谢您的建议,谢谢您的时间。