【发布时间】:2018-07-12 11:20:04
【问题描述】:
我一直想知道可执行文件里面的符号是什么意思,比如当我组装我的程序时,它会创建一个文件,但是当我用文本编辑器打开那个文件时,它有这些不可读的代码,例如 ^@^B ^A 等。这是机器码吗?我认为机器代码就像汇编,但带有二进制文件。
【问题讨论】:
-
你看到的随机混乱是你的文本编辑器试图将它在可执行文件中找到的单个字节转换为文本。构成可执行文件的字节会导致编辑器呈现难以理解的文本和符号,因为可执行文件的内容不是文本文件……而是构成可执行文件结构的字节。可执行文件有很多部分,并且有几种不同的格式(取决于您的平台)。
-
@SimonWhitehead 是否可以只看到字节而不是符号?
-
是的 - 您使用 a hex editor 执行此操作。十六进制编辑器将向您显示单个字节和它们的文本表示。如果您觉得需要,还允许您操作它们。
-
另外...我假设您是一名程序员...您可以编写一些代码来逐字节读取文件。这是等价的……显然。
-
这只是因为文本编辑器试图将其显示为文本而不应该是文本;当您将其显示为文本时,它根本没有意义。就像如果你用
fprintf写一个int然后用fread读它,你会得到垃圾。
标签: c assembly executable binaryfiles machine-code