7、Java类文件结构解析与反编译探索

Java类文件结构解析与反编译探索

1. 类文件展示格式

传统展示类文件的方式较为繁琐,可采用XML格式,它能让我们更快速地遍历类文件的内部结构,也使类文件信息更易理解。要运行相关代码,需先从www.freeinternals.org下载jCFL jar文件并放入类路径,然后执行以下命令:

javac ClassToXML.java
java ClassToXML < Casting.class > Casting.xml
2. 魔数(Magic Number)

类文件开头的4个字节是魔数,以十六进制表示为0xCAFEBABE,它告知JVM正在接收一个类文件。这个魔数的选择有其缘由,据说与附近一家名为Cafe Dead的咖啡馆有关,最初是0xCAFEDEAD,随后演变为0xCAFEBABE。其他一些公司也有各自的魔数,如Motorola的0xFEEDFACE、IBM的0xDEADBEEF和Sun的0xDEADBABE等。而Microsoft的CLR文件有类似的头部BSJB,是以.NET平台的四位原始开发者命名的。

3. 次要和主要版本号(Minor and Major Versions)

紧跟魔数之后的4个字节是次要和主要版本号,示例中为0x0000和0x0033,即次要版本0和主要版本51,这表明代码是由JDK 1.7.0编译的。JVM使用这些版本号来确保识别并完全理解类文件的格式,会拒绝执行具有更高主次版本号的类文件。次要版本用于需要更新JVM的小改动,主要版本用于需要全新且不兼容JVM的重大根本性改动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值