【发布时间】: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 字符串附近?
-
在字符串的末尾,以便其余内容保持在同一位置。