Android 天猫apk聊天数据库解密

1.施用Android 天猫apk 进行拉会生出tmallWangXinDB的数据库。
2.用sqlite3 工具打开提示加密或者不当。
3.欲对该数据库进行解密。

解密流程:
1.倒编译apk,dex2jar器与smali 文件夹着检索还并未tmallWangXinDB
关键字。
2.所以IDA打开可疑之名目so,分析发现凡是独apk。sqlite 1

3.倒编译该apk及追寻对应之第一字。

sqlite 2

4.构造函数有延续SQLiteOpenHelper设置秘钥的函数。

5.SQLiteOpenHelper之包名可以知晓用也是sqlcypto加密(阿里底多如牛毛apk几乎都因此是方案加密数据库)。

6.setPassword(((TelephonyManager)paramContext.getSystemService(“phone”)).getDeviceId());获取为手机的imei
局部部手机吗15各项 不相符AES key要求呢16各。

7.IDA加载libdatabase_sqlcrypto.so

sqlite 3

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)。sqlite 4

  1. 编写解密程序验证 解密后的数据库也正常sqlite3 打开如下。

sqlite 5

网站地图xml地图