【问题标题】:Altering an exe file (deleting or changing 1 byte) and keep it executable更改 exe 文件(删除或更改 1 个字节)并使其可执行
【发布时间】:2015-11-13 13:07:40
【问题描述】:

我有一个在 Windows 10 上运行正常的 exe 文件(Windows 环境),但最终会产生错误(“找不到文件夹 %USERPROFILE%\Local Settings\folder\\Tempfolder”)。不用说,该文件夹确实存在。我用十六进制编辑器查看了 exe 文件,发现某处有(硬编码)此特定文件夹的 URL,以明文形式显示。它看起来与错误消息相同: "%USERPROFILE%\Local Settings\folder\\Tempfolder"。

我想知道 URL 中是否有错误 - 最后一个子文件夹之前的双反斜杠。从上面的例子可以看出,双反斜杠只出现在最后一个子文件夹,所以我不认为它被解释为转义字符。

所以我尝试用十六进制编辑器删除多余的反斜杠,保存并执行,但是当我这样做时,Windows 10 停止执行它,它说类似“这不能被识别为 Windows 应用程序”。

为什么会这样? 有没有办法在不弄乱可执行文件的情况下做到这一点?

(注:上面的网址是一个例子,我就不写真实的了,因为exe实际上是破解流派的可疑工具)

【问题讨论】:

  • 通常情况下,在更改编译后的二进制文件时,您必须保留所有内容的偏移量,因此请继续,删除多余的斜杠,但在末尾添加一个填充(末尾的 0x00 字节表示 C 样式字符串终止很常见)。当然,只要 exe 没有签名并且没有任何类型的校验和保护。
  • 0x00 字节应该放在文件末尾还是 URL 字符串附近?
  • 在字符串的末尾,以便其余内容保持在同一位置。

标签: hex exe


【解决方案1】:

停止!

不要将它用于提问者正在做的事情。它可能会更糟。

在字符串末尾添加一个0x00 字节。 :)
并更新校验和。
如果它已签名,那你就不走运了。

如果您不想更新校验和,请使用CFF Explorer

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多