我正在对Android应用程序进行逆向工程。并且需要反序列化在android com.db4o类中序列化的sqllite3 blob数据。
在代码Google网站上找到了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
我想知道是否还有其他方法。
最佳答案
在您不提及问题上下文的情况下,最简单的方法是:
用Java创建帮助脚本
该脚本读取序列化的对象(注意,您需要为此使用Java类代码)
使用通用格式(如JSON)导出数据