复制.text部分并在结尾处添加新部分可执行文件

时间:2017-05-10 02:18:04

标签: assembly portable-executable

我有一个现有的PE二进制文件,我手动修补。我正在复制.text部分(在开头)并将其添加到部分表的末尾。然后,我用所有.text覆盖第一个/旧0xCC部分。由于这种变化,指令本身的虚拟地址当然会改变。由于我在添加/移动的mov eax, dword ptr [rip + 0x2024]部分中有.data(它将指向.text部分中的地址)的说明,因此它会指向错误的内容(因为{{1}因为整个指令处于一个新的RVA,它不会再指向rip部分中的那个位置)。

我是否还需要手动修补实际的机器代码,以便它再次指向.data部分中的正确偏移量?或者有更好/更聪明的方法来修复我的PE图像,以便现有的机器代码在新的/移动的部分中工作?

我想将它移动到最后一个新部分的原因是因为我正在改变原始代码(添加死代码,nops等)。由于这会导致代码的大小发生变化,因此在新的部分中移动整个变异代码(可能比原始代码大2-3倍)似乎更好。现在,我正在反汇编原始代码并修复所有.datacalljmp指令,以使用正确的RVA。我在这里做的工作多于必要吗?

是否可以使用重定位以更简单的方式实现我想要的目标?

0 个答案:

没有答案