- PR -

ObjectOutputStream#writeObject()で出力したファイルを解析するツールはありませんか

1
投稿者投稿内容
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2003-08-05 18:59
SerializedなオブジェクトをObjectOutputStream#writeObject()で出力すると、バイナリファイルとして出力されます。そのファイルの構造の仕様はSunから公開されています。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/serialization/spec/serialTOC.doc.html

ここで、通常はObjectInputStream#readObject()を使用すれば元のオブジェクトを復元できるのですが、クラスローダーが見つけられるところに.classがないといけません。

ここで例えば、
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/serialization/spec/protocol.doc6.html
の下の方のバイナリファイル(ac ed 00 05...)だけが与えられて.classなどがないときに、

・フィールドの情報
コード:
class List implements java.io.Serializable {
  int value;
  List next;
}



・出力されたオブジェクトについてのフィールドの値
コード:
List[0]
  int value = 17;
  List next = list[1];

List[1]
  int value = 19;
  List next = null;



などを知りたいのです。

これらの情報はバイナリファイル自身に書き込まれており(仕様参照)、復元可能であると思います(不可能でしたらご指摘ください)。

自力で解析ツールを作成することも検討中ですが、「すでにどこかで公開しれているのでは」と思い、Googleで調べてみましたが検索キーワードが悪いのか見つけられませんでした。
どなたかご存じではないでしょうか ?
1

スキルアップ/キャリアアップ(JOB@IT)