安全矩阵

 找回密码
 立即注册
搜索
查看: 2942|回复: 0

Java反序列化之文件

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-8-9 09:04:12 | 显示全部楼层 |阅读模式
原文链接:Java反序列化之文件

在前面文章提到了文件格式,这一篇就分析一个序列化和反序列化是如何识别的
这次写个class来进行对象的序列化和反序列化,查看文件object

对照序列化的含义定义来分析上面代码执行得到的object
final static short STREAM_MAGIC = (short)0xaced;final static short STREAM_VERSION = 5;final static byte TC_NULL = (byte)0x70;final static byte TC_REFERENCE = (byte)0x71;final static byte TC_CLASSDESC = (byte)0x72;final static byte TC_OBJECT = (byte)0x73;final static byte TC_STRING = (byte)0x74;final static byte TC_ARRAY = (byte)0x75;final static byte TC_CLASS = (byte)0x76;final static byte TC_BLOCKDATA = (byte)0x77;final static byte TC_ENDBLOCKDATA = (byte)0x78;final static byte TC_RESET = (byte)0x79;final static byte TC_BLOCKDATALONG = (byte)0x7A;final static byte TC_EXCEPTION = (byte)0x7B;final static byte TC_LONGSTRING = (byte) 0x7C;final static byte TC_PROXYCLASSDESC = (byte) 0x7D;final static byte TC_ENUM = (byte) 0x7E;final static  int   baseWireHandle = 0x7E0000;反序列化数据开头包含了两字节的魔术数字,这也是二进制文件的特征,接下来是两字节的版本号,之后就是类名信息,成员变量的类型和个数等
魔数:aced占两个字节,是对象序列化文件的魔数,这是二进制文件的文件类型。(可在ObjectStreamConstants接口中找到)
序列化协议版本号:0005,指明java用什么样的序列化规则来生成二进制文件,这里的流协议版本是short类型,并且值为5,也叫5号协议。
对象类型:7372 ,用一个字节来描述当前的对象类型。字符串:0x74,java对象:0x73,数组:0x75,类:0x76。用下一个字节代表该对象是一个对类的描述
全限定名长度:0008描述信息的长度, 也就是myobject的长度。
序列号版本:CF 7A 75 C5 5D BA F6 98long型 占8字节,用来验证该类是否被修改过的验证码
序列化类型:02, 一个字节,用于指明当前对象的序列化类版本,
字段个数:0001 两个字节,指明对象中需要被序列化的字段个数。
接下来是对字段的解读
字段类型:4c 对应ascii中的L,对应class
字段长度 :0004 两个字节,代表该字段所占长度
字段对应的16进制:6E 61 6D 65 正好name字符串对应的16进制
name字段 :字段类型 74 (类型以74开头),类型 L(4c),字段类型类名长度18 LJava/lang/String;
类型描述信息结束的标识:7870 结束标签 78 ,超类类型,没有就是70
接下来是类数据的描述:
类型:0x74
长度:0002
值:6869 hi
字段值分析序列化的数据流是以魔术数字和版本号开头,这个值是在调用ObjectOutputStream序列化时,由writeStreamHeader方法写入的
跟进

可根据 ObjectStreamConstants.java 文件中的ObjectStreamConstants来分析反序列化文件的格式

工具-SerializationDumper手动分析完后,利用 SerializationDumper工具来分析一下序列化的文件结构
命令:java -jar SerializationDumper-v1.13.jar cat object | xxd -p -c 100000000

工具- 010editor还没写好
总结关于010editor 识别反序列化的文件格式,最近工作繁忙,一直没有去写,也不知道有没有现成的。
文件格式对于理解反序列化和序列化工作过程有很大的帮助,是深入理解序列化必不可少的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 12:35 , Processed in 0.012367 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表