我有一台Windows 7电脑。我听说Window的可执行文件使用PE格式。我试图了解可执行文件是如何组装的,所以我在十六进制编辑器中打开了一个。它们以标题“MZ”开头,以便计算机知道它是.exe文件。大多数不是英语。我还注意到在我的特定文件中它有3个96个字符的“块”。其中两个接近开头,一个接近尾声。这就是它的样子:
BrokenLink
此代码使用FASM汇编程序。
这是编译之前的代码:
BrokenLink
所以我的问题是,可执行文件是如何“放在一起”的。什么是无尽的NULL字符。另外,为什么编辑文件的十六进制代码并添加一个数据“损坏”的字节,但是当你改变一个字节时,为什么会这样呢。
非常感谢!
基督教
答案 0 :(得分:2)
Windows使用的格式是Microsoft的Portable Executable格式。要了解更多信息,您可以阅读文件的specification。
所以我的问题是,可执行文件是如何“放在一起”的。怎么了 无尽的NULL字符。另外,当你编辑十六进制代码时怎么样 一个文件并添加一个字节数据被“损坏”,但是怎么回事 你改变一个字节,没关系。
Portable Executables遵循一定的标准。你不能只改变字节,因为你会导致文件破坏标准。
因此,在任意位置添加字节可能会破坏格式。例如,PE文件由部分组成。这些部分具有一定的大小,在章节标题中定义。节标题本身是一定大小,在特定偏移处具有特定字段。假设您只是在一个节或节标题中添加一个字节,您可能会通过将字段移动到它们不期望的偏移量来破坏文件,或者使它变得不像原来定义的那样大小。
更改字节会在某处更改值。即使这样,你也可能搞砸了。如果你有一个特定的目标,你应该说出来,我们可以指出你更好的方向来追求它。