【发布时间】: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