国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > [置顶] Class文件二进制分析

[置顶] Class文件二进制分析

来源:程序员人生   发布时间:2015-01-04 08:53:05 阅读次数:4362次

本篇博文描写的是对1个很简单的java文件的对应的class文件的2进制分析.

要分析class文件的2进制格式,必须了解对应版本的jvm specification.

由于jvm specification中关于class文件的内容有点多,所以这里不在描写相同的内容.

说明:本篇博文中设计的class文件对应的jvm specification版本是 jvm 8.

  • java文件01:SimpleClassDemo1.java

package com.rocky.jvm.classfile; /** * Created by rocky on 14⑴2⑵3. */ public class SimpleClassDemo1 { }


对应的class文件2进制内容:SimpleClassDemo1.class (16进制表示)

cafe babe 0000 0034 0010 0a00 0300 0d07 000e 0700 0f01 0006 3c69 6e69 743e 0100 0328 2956 0100 0443 6f64 6501 000f 4c69 6e65 4e75 6d62 6572 5461 626c 6501 0012 4c6f 6361 6c56 6172 6961 626c 6554 6162 6c65 0100 0474 6869 7301 002a 4c63 6f6d 2f72 6f63 6b79 2f6a 766d 2f63 6c61 7373 6669 6c65 2f53 696d 706c 6543 6c61 7373 4465 6d6f 313b 0100 0a53 6f75 7263 6546 696c 6501 0015 5369 6d70 6c65 436c 6173 7344 656d 6f31 2e6a 6176 610c 0004 0005 0100 2863 6f6d 2f72 6f63 6b79 2f6a 766d 2f63 6c61 7373 6669 6c65 2f53 696d 706c 6543 6c61 7373 4465 6d6f 3101 0010 6a61 7661 2f6c 616e 672f 4f62 6a65 6374 0021 0002 0003 0000 0000 0001 0001 0004 0005 0001 0006 0000 002f 0001 0001 0000 0005 2ab7 0001 b100 0000 0200 0700 0000 0600 0100 0000 0600 0800 0000 0c00 0100 0000 0500 0900 0a00 0000 0100 0b00 0000 0200 0c


分析结果以下: (直接帖文字会变形,所以截的图.这里提供下载:http://download.csdn.net/detail/u012358984/8319813)






















































































  • java文件02:SimpleClassDemo2.java
package com.rocky.jvm.classfile; /** * Created by rocky on 15⑴⑵. */ public class SimpleClassDemo2 implements Interface01,Interface02 { public long add(int i, long j) { return i + j; } private void calc() { int i = 5 + 5; System.out.println(i); } private int field1 = 0; public int field2 ; protected static int field3 = 6; public final int field4 = 7; public static final long field5 = 8; @Override public Integer interface01() { return 0; } @Override public boolean interface02() { return false; } }
SimpleClassDemo2.class2进制内容(16进制表示)
cafe babe 0000 0034 0041 0a00 0900 2a09 0008 002b 0900 0800 2c09 002d 002e 0a00 2f00 300a 0031 0032 0900 0800 3307 0034 0700 3507 0036 0700 3701 0006 6669 656c 6431 0100 0149 0100 0666 6965 6c64 3201 0006 6669 656c 6433 0100 0666 6965 6c64 3401 000d 436f 6e73 7461 6e74 5661 6c75 6503 0000 0007 0100 0666 6965 6c64 3501 0001 4a05 0000 0000 0000 0008 0100 063c 696e 6974 3e01 0003 2829 5601 0004 436f 6465 0100 0f4c 696e 654e 756d 6265 7254 6162 6c65 0100 124c 6f63 616c 5661 7269 6162 6c65 5461 626c 6501 0004 7468 6973 0100 2a4c 636f 6d2f 726f 636b 792f 6a76 6d2f 636c 6173 7366 696c 652f 5369 6d70 6c65 436c 6173 7344 656d 6f32 3b01 0003 6164 6401 0005 2849 4a29 4a01 0001 6901 0001 6a01 0004 6361 6c63 0100 0b69 6e74 6572 6661 6365 3031 0100 1528 294c 6a61 7661 2f6c 616e 672f 496e 7465 6765 723b 0100 0b69 6e74 6572 6661 6365 3032 0100 0328 295a 0100 083c 636c 696e 6974 3e01 000a 536f 7572 6365 4669 6c65 0100 1553 696d 706c 6543 6c61 7373 4465 6d6f 322e 6a61 7661 0c00 1700 180c 000c 000d 0c00 1000 0d07 0038 0c00 3900 3a07 003b 0c00 3c00 3d07 003e 0c00 3f00 400c 000f 000d 0100 2863 6f6d 2f72 6f63 6b79 2f6a 766d 2f63 6c61 7373 6669 6c65 2f53 696d 706c 6543 6c61 7373 4465 6d6f 3201 0010 6a61 7661 2f6c 616e 672f 4f62 6a65 6374 0100 2363 6f6d 2f72 6f63 6b79 2f6a 766d 2f63 6c61 7373 6669 6c65 2f49 6e74 6572 6661 6365 3031 0100 2363 6f6d 2f72 6f63 6b79 2f6a 766d 2f63 6c61 7373 6669 6c65 2f49 6e74 6572 6661 6365 3032 0100 106a 6176 612f 6c61 6e67 2f53 7973 7465 6d01 0003 6f75 7401 0015 4c6a 6176 612f 696f 2f50 7269 6e74 5374 7265 616d 3b01 0013 6a61 7661 2f69 6f2f 5072 696e 7453 7472 6561 6d01 0007 7072 696e 746c 6e01 0004 2849 2956 0100 116a 6176 612f 6c61 6e67 2f49 6e74 6567 6572 0100 0776 616c 7565 4f66 0100 1628 4929 4c6a 6176 612f 6c61 6e67 2f49 6e74 6567 6572 3b00 2100 0800 0900 0200 0a00 0b00 0500 0200 0c00 0d00 0000 0100 0e00 0d00 0000 0c00 0f00 0d00 0000 1100 1000 0d00 0100 1100 0000 0200 1200 1900 1300 1400 0100 1100 0000 0200 1500 0600 0100 1700 1800 0100 1900 0000 4200 0200 0100 0000 102a b700 012a 03b5 0002 2a10 07b5 0003 b100 0000 0200 1a00 0000 0e00 0300 0000 0600 0400 1000 0900 1600 1b00 0000 0c00 0100 0000 1000 1c00 1d00 0000 0100 1e00 1f00 0100 1900 0000 4300 0400 0400 0000 051b 8520 61ad 0000 0002 001a 0000 0006 0001 0000 0008 001b 0000 0020 0003 0000 0005 001c 001d 0000 0000 0005 0020 000d 0001 0000 0005 0021 0014 0002 0002 0022 0018 0001 0019 0000 0047 0002 0002 0000 000b 100a 3cb2 0004 1bb6 0005 b100 0000 0200 1a00 0000 0e00 0300 0000 0c00 0300 0d00 0a00 0e00 1b00 0000 1600 0200 0000 0b00 1c00 1d00 0000 0300 0800 2000 0d00 0100 0100 2300 2400 0100 1900 0000 2f00 0100 0100 0000 0503 b800 06b0 0000 0002 001a 0000 0006 0001 0000 001c 001b 0000 000c 0001 0000 0005 001c 001d 0000 0001 0025 0026 0001 0019 0000 002c 0001 0001 0000 0002 03ac 0000 0002 001a 0000 0006 0001 0000 0021 001b 0000 000c 0001 0000 0002 001c 001d 0000 0008 0027 0018 0001 0019 0000 001e 0001 0000 0000 0006 1006 b300 07b1 0000 0001 001a 0000 0006 0001 0000 0014 0001 0028 0000 0002 0029
2进制分析结果: (txt下载:http://download.csdn.net/detail/u012358984/8321477)

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生