java 文件编译为 .class 字节码(byte code),字节码文件的前 4 位为魔数(起到标识说明作用),magicNumber = 0xCAFEBABE;

1. 可执行文件

几乎所有的可执行文件格式最开始的几个字节都是魔数:

a.out:最开始的两个字节为 0x01,0x07;

PE/COEF 文件最开始的两个字节为:0x4d, 0x5a,即 ASCII 码 MZ

>> chr(0x4d)
'M'
>> chr(0x5a)
'Z' 

ELF 文件的头四个字节:0x7F,0x45,0x4C,0x46

第一个字节为 DEL 控制符,后三个字节则为 ELF 三个字母的 ASCII 码;

>> chr(0x7f)
'x7f'
>> chr(0x45)
'E'
>> chr(0x4c)
'L'
>> chr(0x46)
'F'