如何修改可执行文件而不损坏它?

问题描述 投票:0回答:3

是否存在特定的空字符或字节序列,如果添加到文件的前面,则不会损坏可执行文件?我尝试添加 NUL(00 十六进制),但每次都会损坏可执行文件。是否有一些用于 NOP(无操作)或类似内容的字节码?

长话短说,我想搞砸一个“黑客”,它修改内存中&process+固定偏移量的值。将内存堆栈向上推会(或者我认为)阻止它工作。

windows executable exe bytecode nul
3个回答
2
投票

不,Windows 可执行文件使用的 PE 文件格式具有非常特定的标头。请参阅 http://en.wikipedia.org/wiki/Portable_Executable 了解更多详细信息。

您可以尝试使用 ASLR 使您的代码更能抵抗内存修补。


1
投票

您必须将其完全解析为不同的部分和段,修改您要查找的部分,但您将无法在任何代码段之前插入代码: 你最好有一个首先执行的段,然后跳转到旧的开始段。

最后您必须重新创建一个新的完整可执行文件。


0
投票

也许您可以使用反编译器将其转换为高级语言,然后插入一些任意函数或数据并重新编译它。您可能需要在编译器中禁用一些优化标志,以便任意函数不会被排除在生成的二进制文件中。

© www.soinside.com 2019 - 2024. All rights reserved.