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

Receiving Segmentation fault when trying to execute injected code inside ELF binary

我目前正在研究 ELF 注入器,我的方法是标准的:找到代码洞(足够长的 0 序列),用我想执行的指令重写它,然后跳回到原来的开始程序来正常执行它。

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

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

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

下面是一些在gdb中调试程序的截图:

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

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

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

I am also changing the access flags for the section, in which code cave resides.

Sections are not used 在运行时,只有 segments 是。在链接程序后更改部分的访问标志完全没有任何作用。

您需要在具有适当权限的路段中为您的小海湾找到一个位置。

P.S。您似乎正在使用 objdump 检查您的 ELF 文件的内容。

不要:完全是 inadequate。请改用 readelf