是否有一个特定的空字符或字节序列,如果添加在文件的前面,将不会损坏可执行文件?我试图添加NUL(00十六进制),但它每次都损坏可执行文件。是否有一些NOP(无操作)或类似的字节码?长话短说,我想搞砸一个“hack”,修改内存中的一个值,在&process+fixed offset.向上推内存堆栈会(或者我认为)阻止它工作。
zpjtge221#
不,Windows可执行文件使用的PE文件格式有一个非常特定的头。有关详细信息,请参阅http://en.wikipedia.org/wiki/Portable_Executable。您可以尝试使用ASLR来使您的代码更能抵抗内存中的修补。
vdzxcuhz2#
你必须将它完全解析成不同的部分和段,修改你正在寻找的部分,但是你不能在任何代码段之前重新编译代码:你最好有一个将首先执行的段,然后将跳转到旧的开始段。最后,您必须重新创建一个新的完整的可执行文件。
oogrdqng3#
也许你可以使用反编译器将其转换为更高级的语言,然后插入一些任意函数或数据并重新编译它。你可能需要在编译器中禁用一些优化标志,这样任意函数就不会被排除在生成的二进制文件中。
3条答案
按热度按时间zpjtge221#
不,Windows可执行文件使用的PE文件格式有一个非常特定的头。有关详细信息,请参阅http://en.wikipedia.org/wiki/Portable_Executable。
您可以尝试使用ASLR来使您的代码更能抵抗内存中的修补。
vdzxcuhz2#
你必须将它完全解析成不同的部分和段,修改你正在寻找的部分,但是你不能在任何代码段之前重新编译代码:你最好有一个将首先执行的段,然后将跳转到旧的开始段。
最后,您必须重新创建一个新的完整的可执行文件。
oogrdqng3#
也许你可以使用反编译器将其转换为更高级的语言,然后插入一些任意函数或数据并重新编译它。你可能需要在编译器中禁用一些优化标志,这样任意函数就不会被排除在生成的二进制文件中。