正如标题所示,这将如何完成?如果我在操作码的开始处添加了一个字节,它将以一个字节将内存中的地址压入。如果你不明白的问题:在不影响执行的情况下向PE添加字节
原:
0x1 mov ecx, 10
0x2 mov eax, 1
0x3 inc eac
0x4 cmp eax
0x5 jl 0x3
新增字节:
0x1 NOP
0x2 mov ecx, 10
0x3 mov eax, 1
0x4 inc eac
0x5 cmp eax
0x6 jl 0x3
我将不得不手动设置每一个JMP和调用等还是有什么其他方法可以做到它?
您必须手动检查程序中使用的每个存储器地址,以确定是否需要调整它。在一个非平凡的程序中,这是不实际的,因为你需要修复的地址可能在任何地方。另请注意,您列出的大多数指令长度超过1个字节。 –
嗯,这可能不是完全相同的。我选择的dup目标是关于添加新代码的一种特定方法(将其放在一个新的部分中,并用jmp替换一些现有的insn),但Jean-François的答案指出了其他技术。 –