为什么“二进制文件”不是原始二进制文件?

Why are “binary files” not in raw binary?

我有一个保存在可执行文件中的 C 程序(.exe - 我听说这也称为“二进制”文件)。 当我在文本编辑器中打开它时,它不是二进制文件,而是其他一些古怪的字符集。为什么是这样?该文件实际显示执行的哪个阶段?为什么这个中间文本存在于 C 代码和实际原始二进制文件之间?

.exe 是代表 可执行 的文件扩展名。可执行文件不是源代码,而是操作系统直接编译成运行的文件。您看到的那些 运行dom 字符是因为该文件由一系列字节组成,这些字节并非旨在作为文本查看。

A binary file is a computer file that is not a text file. The term "binary file" is often used as a term meaning "non-text file". Many binary file formats contain parts that can be interpreted as text; for example, some computer document files containing formatted text, such as older Microsoft Word document files, contain the text of the document but also contain formatting information in binary form.


这些文件不适合在记事本等文本编辑器上阅读或查看。大多数文本编辑程序不解析二进制编码格式,而希望解析 ASCII 字符代码格式。

您需要一个反汇编程序、一个十六进制查看器或特定工具(如readpe)来读取内容exe 文件。但代码混淆可能会阻碍反汇编。代码可能会被故意混淆以使其更难检索源代码。

你看到的"wacky assembly of characters"是二进制。一般来说,二进制文件是指任何不是纯文本但包含供程序而不是人读取的数据的文件。

您拥有的 .exe 文件包含 运行 程序所需的机器代码,以及一些描述文件布局的数据。

当您在文本编辑器中打开 .exe 时,您看到的是编辑器试图理解它正在阅读的内容。文件中的某些字节可能是可读字符的 ASCII 代码,因此在这种情况下您会看到这些字符。对于 ASCII 代码不是可打印字符的字节,编辑器会尝试以某种有意义的方式显示。