在汇编代码中定义新的代码段来编译 ELF 二进制文件

逆向工程 部件 C 小精灵 动态链接
2021-07-07 08:47:43

我在我的汇编程序中定义了一个新的代码段,它将在 x86 上编译成 32 位 ELF 二进制文件。

我使用链接器脚本为这个新代码部分分配一个指定的地址,它有效。但是,经过一些调试后,我注意到这个新部分没有加载到内存中!

我使用readelf并发现这个新部分没有“执行”特权:

[15] .trampoline       PROGBITS        080483d0 004020 000117 00      0   0 16

然后我这样做了:

objcopy --set-section-flags .trampoline=alloc,code a.out

但是,我收到了这个警告:

BFD: stQWykoH: warning: allocated section `.trampoline' not in segment

现在我意识到我没有明确地segment为我的新部分分配信息!!

所以这是我的问题:

  1. 如何将segment信息分配给我定义的新代码部分?我仔细检查了链接器脚本(按照此处的说明进行转储),但我不知道如何修改脚本...

  2. 我只想在我的汇编程序中添加一个新的可执行部分,并为这个新部分分配一个固定地址。那么我现在走在正确的道路上吗?

0个回答
没有发现任何回复~