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.解密后可以打開數據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM