尝试在ELF二进制文件中执行注入的代码时收到分段错误

纳扎尔·帕斯特纳克(Nazar Pasternak)

我目前正在使用ELF注入器,并且我的方法是标准的:找到代码洞穴(足够长的0序列),用我要执行的指令重写它,然后跳回到原始程序的开始以按以下方式执行通常会。

为了在代码洞中实际执行代码,我尝试了两种不同的方法,这两种方法都会产生sigsegv。

第一个是将入口点更改为代码洞的开始。第二个是“窃取”原始代码中的一些第一条指令,并跳转到我的代码洞穴中,然后在执行注入的代码后,我将首先执行被盗的指令,然后跳转到最后一条被盗的指令之后的指令。原始程序。

我还更改了代码洞穴所在的部分的访问标志。

以下是在gdb中调试程序的屏幕截图:

入口点的指令-0x555555556156是代码洞穴的地址

代码洞穴中的指令-执行被盗的指令并跳回

执行代码

这是代码洞穴所在部分的标志:

[19] 0x555555556058->0x555555556160 at 0x00002058: .eh_frame ALLOC LOAD READONLY CODE HAS_CONTENTS

编辑:这是Valgrind的输出,因此问题实际上出在权限上。如何允许执行本节中的代码?

在此处输入图片说明

受雇于俄罗斯

我还更改了代码洞穴所在的部分的访问标志。

在运行时不使用,而仅使用链接程序后更改节上的访问标志完全不起作用。

您需要在具有适当权限的网段中找到自己的小海湾。

PS您似乎正在objdump检查ELF文件的内容。

不要:这是完全不够的使用readelf代替。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 runc 容器中执行二进制文件时出现分段错误

读取二进制文件时出现分段错误

从二进制分段错误中读取时

尝试使用重载运算符读取二进制文件时出现分段错误>>

如何使bash从stdin执行ELF二进制文件?

我可以执行驻留在数据段(ELF二进制)中的代码吗?

收到错误:bash:./program:无法执行二进制文件:Exec格式错误

C ++-分段错误读取二进制文件

读取二进制文件 - 分段错误

追加和读取二进制文件时出现分段错误

ELF二进制文件中默认信号处理程序的代码在哪里?

修改ELF二进制文件中的asm指令

执行.csh文件时出错:->无法执行二进制文件:EXEC格式错误

在C中读取二进制文件会引发分段错误

尝试安装Eclipse时出现“ bash:./ eclipse:无法执行二进制文件”

尝试在Linux上运行Shell脚本时“无法执行二进制文件”

尝试编译包含二进制ifstream的代码时,编译会导致错误

在Linux中从可执行文件到机器代码的二进制执行步骤

运行使用gccgo构建的二进制文件时,“ ELF可执行文件errno中没有调试信息”

执行二进制文件时出现“无此文件或目录”错误,还显示权限被拒绝

执行二进制文件时出现“无此文件或目录”错误

bash错误:无法执行二进制文件

执行二进制代码

是否可以在Java中执行二进制文件?

我不明白为什么我的二进制搜索代码显示分段错误

C无效二进制文件中的错误消息

ifstream二进制文件错误

分析混淆的ELF二进制文件

编译的Elf二进制文件太大