- 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'