Android 天貓apk聊天數據庫解密


1.使用Android 天貓apk 進行聊天會產生tmallWangXinDB的數據庫。
2.用sqlite3 工具打開提示加密或者錯誤。
3.需要對該數據庫進行解密。

解密流程:
1.反編譯apk,dex2jar工具及smali 文件夾中搜索都沒有tmallWangXinDB 關鍵字。
2.用IDA打開可疑的名稱so,分析發現是個apk。

3.反編譯該apk及查找對應的關鍵字。

4.構造函數有繼承SQLiteOpenHelper設置秘鑰的函數。

5.SQLiteOpenHelper的包名可以知道采用也是sqlcypto加密(阿里的系列apk幾乎都用此方案加密數據庫)。

6.setPassword(((TelephonyManager)paramContext.getSystemService("phone")).getDeviceId());獲取為手機的imei
部分手機為15位 不符合AES key要求為16位。

7.IDA加載libdatabase_sqlcrypto.so

8.sqlite3加密流程,sqlite3_key->sqlite3_key_v2->sqlite3CodecAttach
sqlite3CodecAttach中的回調函數->aes_decrypt
9.由於so存在反調試,采用hook獲取aes_decrypt解密的參數。

hook函數

 1 unsigned int my_aes_decrypt(int a1, int a2, int a3) {
 2 LOGD("my_aes_ hook!");
 3 char szHex_key[250] = { 0 };
 4 unsigned char* pTemp_key = (unsigned char*) a3;
 5 for (int i = 0; i < 0x10; ++i) {
 6 /* code */
 7 char szTemp_key[10] = { 0 };
 8 sprintf(szTemp_key, "%02x ", pTemp_key[i]);
 9 strcat(szHex_key, szTemp_key);
10 }
11 LOGD("Tips: key=a2===%s", szHex_key);
12 return aes_decrypt(a1, a2, a3);
13 }

 

10.通過hook的參數可以知道當imei為15位的時候補充的字符為'{'(ascii 0x7b)。

11. 編寫解密程序驗證 解密后的數據庫為正常sqlite3 打開如下。


免責聲明!

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



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