zoukankan      html  css  js  c++  java
  • Android 千牛数据库分析

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


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

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

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

    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位进行验证正确可以解密。




    3.解密后可以打开数据库。

  • 相关阅读:
    hadoop 异常及处理总结-02(小马哥精品)
    Linux环境变量(小马哥推荐)
    Apache Tomcat 8.5 安全配置与高并发优化
    深入理解分布式系统中的缓存架构(上)
    Redis的n种妙用,不仅仅是缓存
    springBoot整合ecache缓存
    Spark Streaming实时处理应用
    Spark 实践
    spark性能调优
    Spark调优
  • 原文地址:https://www.cnblogs.com/konf/p/5977277.html
Copyright © 2011-2022 走看看