如果我在HEX编辑器中打开可执行文件,我会看到1和0以十六进制表示法吗?
理论上也可以手工编写可执行文件,用于简单的事情,例如" Hello World"程序
答案 0 :(得分:1)
问题一:是的,你会看到一堆十六进制数字。但任何文件格式都是如此。如果您在十六进制编辑器中打开文本文件,您仍然会看到一堆十六进制数字。但是,如果您在文本编辑器(例如记事本)中打开文本文件,则会看到文本,如果您在文本编辑器中打开可执行文件,则会看到废话,可能带有一些清晰的文本其中的碎片。
是的,理论上可以在十六进制编辑器中手动创建可执行文件。对于某些可执行格式,它更容易,有些 - 更难。非常古老的COM format of MS-DOS是最简单的 - 它完全没有标题,最小的有效COM文件只有几个字节长(甚至可能是一个,我忘了)。现代可执行格式 - PE,ELF - 有一个相当大的标题,用于描述文件的其余部分,指定代码的位置,数据的位置,从哪里导入的函数其他文件等。手动创建文件时,您必须按照规范填写所有这些标题字段。
一般来说,这不是一项富有成效的尝试 - 编译器/链接器组合将为您创建一个可执行文件,而且工作量更少。
答案 1 :(得分:1)
如果您尝试在文本表示中查看可执行文件,则在任何文本编辑器中,您都会看到如下内容:
^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^B^@>^@^A^@^@^@@^D@^@^@^@^@^@@^@^@^@^@^@^@^@x^Q^@^@
^@^@^@^@^@^@^@^@@^@8^@ ^@@^@^^^@ES
这是因为有字节,代码不是符合ASCII的文本符号。
但是如果你在HEX编辑器中打开它,它就像是:
00005f0: 0100 0200 4865 6c6c 6f20 576f 726c 6400 ....Hello World.
0000600: 011b 033b 3400 0000 0500 0000 00fe ffff ...;4...........
0000610: 8000 0000 40fe ffff 5000 0000 2cff ffff ....@...P...,...
0000620: a800 0000 50ff ffff c800 0000 e0ff ffff ....P...........
0000630: f000 0000 0000 0000 1400 0000 0000 0000 ................
这里的字节用HEX表示。
如果您需要直接修改可执行文件,您很可能会发现HEX编辑更好。
然后你可以在HEX编辑器中打开它:
改变一下:
这是一个结果:
ruslan@ruslan-Latitude-E6430:~/Documents$ ./hello
Hello+World