1

私はAndroidアプリでリバースエンジニアリングを行っています。androidcom.db4oクラスでシリアル化されたsqllite3blobデータを逆シリアル化する必要があります。

コードグーグルサイトでpython-javaobjプロジェクトが見つかりました。http://code.google.com/p/python-javaobj/

しかし、実装は少し注意が必要です。

方法1.Pythonでsqlliteを使用してアクセスします。

import sqlite3
conn=sqlite3.connect('sqlite3.db')
c = conn.cursor()
c.execute('select binaryfield from sqltable')
blob=c.fetchone()
blobstring=blob[0]
import javaobj
marshaller = javaobj.loads(blobstring)

エラーメッセージ

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/javaobj-0.1.0-py2.6.egg/javaobj.py", line 44,         in loads
  File "/usr/lib/python2.6/site-packages/javaobj-0.1.0-py2.6.egg/javaobj.py", line 155, in __init__
  File "/usr/lib/python2.6/site-packages/javaobj-0.1.0-py2.6.egg/javaobj.py", line 178, in _readStreamHeader
IOError: The stream is not java serialized object. Invalid stream header: 00000005

他に何かアプローチがあるのだろうか。

4

1 に答える 1

0

質問のコンテキストについて言及していないというコンテキストでの最も簡単なアプローチ:

  • Java でヘルパー スクリプトを作成する

  • スクリプトはシリアル化されたオブジェクトを読み取ります (これには Java クラス コードが必要であることに注意してください)。

  • JSON などの一般的な形式を使用してデータをエクスポートする

于 2012-04-24T20:42:02.240 に答える