Android 千牛数据库分析

标签(空格分隔): 千牛,逆向


问题:Android 千牛登陆后产生保存用户数据的db无法直接用sqlite3打开,需要解密。

反编译Apk后jd-gui查看源码。熟悉的sqlcrypto模块加密,阿里大部分的apk数据库都采用这种方案。Sqlcrypto加密方案,由java层生成一个16位的秘钥,传入libdatabase_sqlcyrpto.so加解密。关键点获取该秘钥进行解密
643854-20161019143927560-539341600.png

1.对SqliteOpenHelper类的setPassword 已经各种涉及到mPassword的函数下断
1)获取到mPassword 为xU06!Ges8SFy6I&e
2)调试两部手机发行改mPassword为固定值。
3)使用该key进行解密可以解密对应的db。
643854-20161019144009998-1504678892.jpg
643854-20161019143946420-661021215.jpg

2.对qianniu.db的解析。因为qianniu.db一启动就会进行db打开操作,所以要设置延迟。在跳转的时候要进行下断及连接。

  1. 搜索qianniu.db定位到taobao/steelorm/dao.
  2. 搜索SQLiteOpenHelper定位到DBOpenHelper.smali.
  3. DBOpenHelper,smali有明显的encypt key:字符串。
  4. DBOpenHelper获取key调用是buildKey,在SQLiteOpenHelper bulidKey下断。
  5. buildKey是native函数,IDA加载libdatabase_sqlcyrpto.so 定位后F5.由于存在反调试无法直接调试。分析代码的意思,有明显的MD5操作,参数由四部分构成。
    第三部分有java传入的。第二部分android_getCpuFamily 为枚举值查找资料对应的arm对1。转换后截取前16位进行验证正确可以解密。

643854-20161019144056185-1762235049.png
643854-20161019144107638-763461763.png
643854-20161019144113185-756903463.png
643854-20161019144119482-317133158.jpg

3.解密后可以打开数据库。
643854-20161019144225185-630827626.png

转载于:https://www.cnblogs.com/konf/p/5977277.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值