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