【问题标题】:Why are “binary files” not in raw binary?为什么“二进制文件”不是原始二进制文件?
【发布时间】:2020-09-25 22:45:14
【问题描述】:

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

【问题讨论】:

  • 可执行文件包含操作码,当您在文本编辑器中查看它们时,编辑器会逐字节读取它们可能无法识别为易读字符。
  • 标准ascii字符用二进制数表示。每个字符“a”、“b”都有一个代码。如果您在文本编辑器中打开“原始二进制”文件,它会显示每个二进制代码对应的字符。每个 CPU 指令也与相应的二进制代码相关联。当文件被复制到内存中时,处理器会为每个二进制代码执行指令。
  • 您可以用多种方式解释术语“二进制”。这不仅仅意味着一件事,这可能会令人困惑。有时,您应该将“二进制”解释为“非文本”。有时“二进制”表示用 1 和 0 表示的东西。在 Linux 系统上,“二进制”有时表示“可执行文件或库”。抱歉,我们的语言令人困惑。

标签: c binary executable machine-code


【解决方案1】:

.exe 是一个文件扩展名,代表executable。可执行文件不是源代码,它是经过编译后由操作系统直接运行的文件。您看到的那些随机字符是因为该文件由一系列字节组成,这些字节并非旨在被视为文本。

二进制文件是非文本文件的计算机文件。术语 “二进制文件”通常用作表示“非文本文件”的术语。许多 二进制文件格式包含可以解释为文本的部分;为了 例如,一些包含格式化文本的计算机文档文件,例如 作为较旧的 Microsoft Word 文档文件,包含 文档还包含二进制格式的格式信息。


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

您需要反汇编程序、十六进制查看器或特定工具(例如 readpe)来读取内容 exe 文件。他们 但是代码混淆可能会阻碍反汇编。代码可能会被故意混淆,以增加检索源代码的难度。

【讨论】:

    【解决方案2】:

    你看到的“古怪的字符组合”二进制的。一般来说,二进制文件是任何不是纯文本的文件,而是包含供程序而不是人读取的数据。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多