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

What happens when you save an exe file in a text editor?

很久以前,我记得在文本编辑器中打开一个可执行文件 (.exe),然后将其保存回硬盘。不用说,可执行文件没有打开。

我的理解是一个文件是一系列的字节。对于文本文件,这些字节对字母进行编码。在可执行文件的情况下,这些字节编码指令。

文本文件和可执行文件都是简单的一系列字节,我的理解是这些字节仅根据您如何解释它们来赋予意义。字符 'a' 可以是单词 apple 中的一个字母,也可以是用于某些低级操作的合法程序编码中的一个字节。同样,程序的所有指令在文本文档的上下文中都可以解释为乱码。

那么我的问题是,为什么在保存文件之前我没有更改文件中的任何内容,它不再作为程序运行。字节序列不应该完全相同吗?

当我使用文本编辑器时,这个文件有什么特别的变化导致它不再执行,即使文件名和内容相同?

这可能是由多种因素造成的,包括以下因素:

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

要进一步调查,请尝试使用文本编辑器或十六进制编辑器比较前后。您可能会发现有关实际更改内容的线索。