【问题标题】:Receiving Segmentation fault when trying to execute injected code inside ELF binary尝试在 ELF 二进制文件中执行注入代码时收到分段错误
【发布时间】:2021-03-10 22:03:54
【问题描述】:

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

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

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

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

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

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

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

编辑:这是 Valgrind 的输出,所以问题实际上出在权限上。怎样才能让这个section里面的代码被执行?

【问题讨论】:

    标签: c segmentation-fault gdb code-injection elf


    【解决方案1】:

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

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

    您需要在具有正确权限的细分市场中为您的海湾找到一个位置。

    附:您似乎在使用 objdump 检查您的 ELF 文件的内容。

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

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      相关资源
      最近更新 更多