我对编译器的魔法不是很熟悉。将人类可读的代码(或者几乎不可读的汇编指令)转换成机器码,对我来说就像是融合了火箭科学和巫术。
我将问题范围缩小到Win32可执行文件(.exe)。当我在专用的查看器中打开这些文件时,我可以在各个地方找到散落的字符串(通常每个字符16位),但其余部分都是垃圾。我想未读取的部分(大部分)是机器码(或者可能是资源,如图像等等)。
有没有一种简单的方法来读取机器码?打开exe作为文件流,并逐字节读取,如何将这些单独的字节转换为汇编?这些指令字节与汇编指令之间是否有直接的映射关系?
.exe文件是如何编写的?每条指令四个字节?更多?更少?我注意到有些应用程序可以轻松地创建可执行文件:例如,在ACD See中,您可以将一系列图像导出为幻灯片演示文稿。但这不一定是SWF幻灯片演示文稿,ACD See也能够生成EXE演示文稿。这是如何完成的?
我如何理解EXE文件内部发生了什么?