我正在尝试在我编写的简单的 hello world 可执行文件中的 .text 部分的开头添加一条 NOP 指令,我知道这不仅仅是那么简单,所以我正在使用反汇编库为了相应地修补所有地址(例如,如果我在二进制文件中插入 1 字节操作码,则该指令之后的所有地址将向前推 1 字节,因此我修补对该地址的所有调用以使用新地址)。
我还更新了 PE header 的OptionalHeader 中的AddressOfEntryPoint 字段,以便入口点正确,但我仍然无法使其正常工作。
所以我的问题基本上是,在一开始添加 1 个 nop 指令后,我需要在可执行文件中“修复”什么(并且我检查了插入它不会破坏任何指令)。 PE header 中是否还有更多字段需要修复?或者我在这里缺少什么? :S
最佳答案
你很可能必须 relocate您的二进制可执行文件(在一般情况下可能不可能,例如 stripped binaries )。潜入 Levine Linkers and loaders书。
如果您可以重新编译该可执行文件,请考虑添加一些 plugin的能力(并使用 dynamic linking )。
关于c++ - 将操作码添加到现有二进制文件需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723743/