gpt4 book ai didi

linux - 如何在不破坏对齐的情况下在 linux 可执行文件中添加/删除 x86 指令

转载 作者:太空狗 更新时间:2023-10-29 11:38:34 24 4
gpt4 key购买 nike

我是二进制和汇编的新手,我很好奇如何直接编辑二进制可执行文件。我试图从二进制文件中删除一条指令(根据 objdump 提供的反汇编指令),但在这样做之后,“可执行文件”似乎不再是可执行格式(运行时出现段错误;gdb 无法识别)。我听说这是由于指令对齐问题。 (是吗?)

那么,是否可以直接在 linux 可执行文件中添加/删除单个 x86 指令?如果是这样,如何?提前致谢。

最佳答案

如果你在没有相应地调整文件头的情况下删除一大块二进制文件,它将变得无效。

幸运的是,您可以用 NOP 替换指令,而无需实际删除它们。文件大小保持不变,如果没有校验和或签名(或者如果没有实际检查),就没有什么可做的了。

没有通用的插入指令的方法,但通常你用JMP覆盖原始代码到另一个位置,在那里你重现原始代码所做的事情,做你想做的事情,然后返回 JMP。如果不更改二进制文件的大小,可能无法为新代码找到空间,因此我会在加载可执行文件后修补代码(可能使用特殊的 LD_PRELOADed 库)。

关于linux - 如何在不破坏对齐的情况下在 linux 可执行文件中添加/删除 x86 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com