当你在文本编辑器中保存一个exe文件时会发生什么?

3
很久以前,我记得曾经在文本编辑器中打开一个可执行文件(.exe),并将其保存回硬盘。不用说,这个可执行文件没有打开。
我的理解是,文件是一系列字节。对于文本文件,这些字节编码为字母。对于可执行文件,这些字节编码为指令。
文本文件和可执行文件都只是一系列字节,我的理解是这些字节只有通过解释才能赋予意义。字符'a'可以是单词"apple"中的一个字母,也可以是合法程序编码中的一个字节来进行某些低级操作。同样,程序的所有指令在作为文本文档时都可以被解释为无意义的字符。
那么我的问题是,既然在保存之前我没有改变文件中的任何内容,为什么它会因此无法作为程序运行?难道这些字节不应该完全相同吗?
当我使用文本编辑器时,到底发生了什么使得这个文件不再能够执行,即使文件名和内容都是相同的呢?

我一般性地回答了这个问题。如果需要更具体的答案,请提供您使用的文本编辑器和操作系统。 - Steven
1个回答

3

可能由于以下因素导致此问题:

  • 并非所有字符都可打印。不可打印的字符可能无法正确保存回来。
  • 某些文本编辑器默认确保文件以换行符结尾(例如:vi)。
  • 即使更改一个字符,也可能使程序不再是有效的可执行文件。
  • 某些文本编辑器会将换行符更改为操作系统默认值。
  • 自动更正可能会不经意地更改字符。
  • 如果文件以不同的编码保存,则字符可能会以不同的方式保存。

要进一步调查,请尝试使用文本编辑器或十六进制编辑器比较修改前后的差异。您可能会发现实际上发生了什么变化的线索。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接