?????????????Java Class??????
?????tinylcy ???????[ 2017/2/15 10:42:40 ] ??????????????????? Java
????????写??????????????????ClassAnalyzer??ClassAnalyzer????????????????Java Class??????????????????????????????????????????????????????些?????????????????????JDK????????????泄???javap????????Class????????????????????????????????路??
????Class???
??????????????????????澹�???Class?????????????????????????Java???????“??写??危?????????”??Java??????娣�??Class?????????????婕�??????Class?????????????位????????些???????????魏畏??????????????Class????写娲�????????????????????械???????????????????????????????????????????????
????????Java??????娣�??Class????????????????C????????伪?????娲�?????????伪???????????????????????????????Java??????娣�??????u1??u2??u4??u8???????1??????2??????4??????8??????????????????????????????????????????????谩???????????????????????????????????????????????????????????????????????????????胁?喂??????????????????????Class??????????????????ClassAnalyzer??u1??u2??u4??u8???????byte??short??int??long??Class??????????????Java??
public class ClassFile {
public U4 magic; // magic
public U2 minorVersion; // minor_version
public U2 majorVersion; // major_version
public U2 constantPoolCount; // constant_pool_count
public ConstantPoolInfo[] cpInfo; // cp_info
public U2 accessFlags; // access_flags
public U2 thisClass; // this_class
public U2 superClass; // super_class
public U2 interfacesCount; // interfaces_count
public U2[] interfaces; // interfaces
public U2 fieldsCount; // fields_count
public FieldInfo[] fields; // fields
public U2 methodsCount; // methods_count
public MethodInfo[] methods; // methods
public U2 attributesCount; // attributes_count
public BasicAttributeInfo[] attributes; // attributes
}
??????谓???
???????Class???????????????校??????????Class?????姹�???????睢�???????????????????????????????????Class????卸???霉?????????????????????????????????????????????????????????????4??????????????伪??????????????????????????魏??????????????????????Class????????????????????????????伪??????????????????????????????????
???????????????Class?????????????????????娲�???械?????????????????????????????????????????????????????????Java??????娣�???????????????????????????????????????????????????????????????屑?????????
????· ??????????????????u1?????tag???????
????· ???????????????小??constantPoolCount????????1?????纾�???constantPoolCount????47???????????????46??????
????· ?????????????围??1????????纾�???constantPoolCount????47??????????????????围?1~46??????????0???????????????????“???????魏?????????????”??
????· CONSTANT_Utf8_info?????????邪???u1?????tag??u2?????length????length??u1????????bytes????length????????????????????MUTF-8??Modified UTF-8??????????????MUTF-8??UTF-8?????????????????????????null??????????2????0xC0??0x80???????????????????UTF-16??????????????????????????????????UTF-8????
??????????????????些??????械??????Class???????伪????????????????????????Java??????娣�??????????????ClassAnalyzer???????????????????????????????????????????????????tag????????????????????????????????????u2?????attribute_name_index??attribute_name_index????????械????CONSTANT_Utf8_info???????????贸???????????????????????????????ClassAnalyzer???????attribute_name_index???????????????????????????????????
??????伪?????????????????????????????????????????????????????????伪??????????u2?????access_flags?????u2?????name_index?????u2?????descriptor_index?????u2?????attributes_count??attributes_count??attribute_info?????attributes??????????????????????????attributes??????????????????????????
????Class???????????????????伪??????娲�????????access_flags?????????????????????????????????????????Code?????Code????娲�??Java???????????????????ClassAnalyzer?校?Code?????Java??????????????谐????????????
public class Code extends BasicAttributeInfo {
private short maxStack;
private short maxLocals;
private long codeLength;
private byte[] code;
private short exceptionTableLength;
private ExceptionInfo[] exceptionTable;
private short attributesCount;
private BasicAttributeInfo[] attributes;
...
private class ExceptionInfo {
public short startPc;
public short endPc;
public short handlerPc;
public short catchType;
...
}
}
??????Code?????校?codeLength??code???????娲�?????????????????????????????u1??????????????????????????code?械??????????????????????????????睢�???????codeLength?????u4?????????????????????????????????65535?????????睢�
???????????
????ClassAnalyzer????????????GitHub?????ClassAnalyzer??README?校???????????Class???????????Class??????????????????????????????????????????
??????

???路???
??????????????????
2023/3/23 14:23:39???写?貌??????????
2023/3/22 16:17:39????????????????????些??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???路???????路
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11