Loading... > 本文章基于Android微信8.0.3 ## 寻找数据库文件 首先,寻找`uin`,位于`/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml`文件中: ![image.png][1] 微信聊天数据库名称为EnMicroMsg.db,位于`data/data/com.tencent.mm/MicroMsg/` 下的某个特定文件夹中,文件名为`md5_32_low(imel + uin)` : ![image.png][2] ![image.png][3] > 微信数据库密码是由IMEI号和微信uin拼接,并使用md5进行加密成32位小写,取前7位为密码。 > 注意:如果密码不正确时,特殊情况下,如果微信拿不到IMEI号时,会默认一个固定值为1234567890ABCDEF 一开始,使用mac平台的各种SQLCipher查看工具,都没能打开。还以为算法改了,分析了一波发现没错,使用windows平台的SQLCipher.exe能打开。 ## 分析流程 微信使用的数据库为wcdb,通过WCDB文档 Android接入,可以了解wcdb打开数据库的方法: ```Java SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase( "path/to/database", // DB 路径 passphrase.getBytes(), // WCDB 密码参数类型为 byte[] cipher, // 上面创建的加密描述对象 null, // CursorFactory null // DatabaseErrorHandler // SQLiteDatabaseHook 参数去掉了,在cipher里指定参数可达到同样目的 ); ``` 通过jadx分析,`openOrCreateDatabase`存在比较多的重载方法,并且内部都使用了`SQLiteDatabase.openDatabase`方法。 通过frida hook该函数并追溯调用栈,寻找密码的生成规则。 ## 调用栈 ![image.png][4] 上溯调用栈,寻找密码生成的位置。 com.tencent.mm.storagebase.a.b: ``` this.key = C7959g.getMessageDigest((C8811q.m22244dJ(true) + j).getBytes()).substring(0, 7); this.kiF = C67989f.m106126E(str, this.key, z); ``` 通过对getMessageDigest方法HOOK,获取到: 参数: 1234567890ABCDEF-156*****65 (1234567890ABCDEF + uin)此处j为uin其实没什么异议,继续分析一下C8811q.m22244dJ(true) , 返回值552**********************ac9fbb6 ```java public static String m22244dJ(boolean z) { AppMethodBeat.m18334i(155720); String str = gXe.get(); if (!Util.isNullOrNil(str)) { AppMethodBeat.m18335o(155720); return str; } else if (z) { AppMethodBeat.m18335o(155720); return "1234567890ABCDEF"; } else { AppMethodBeat.m18335o(155720); return ""; } } ``` gXe 是一个获取设备信息的类,看了一下分析起来比较复杂,就到这为止吧。 **相关文件**: https://pan.baidu.com/s/1WIZ_wdAFn_9tMZNxzC5i5Q 提取码: xpnk ## 参考资料 1、[记一次安卓微信数据库电脑端打开查看的问题](https://www.jianshu.com/p/39cae06eae7f) 2、[Android逆向分析实例(三)-解密微信EnMicroMsg.db数据库](https://blog.csdn.net/qq_42052733/article/details/116305457) [1]: https://reao.io/usr/uploads/2022/06/2864965099.png [2]: https://reao.io/usr/uploads/2022/06/3407230103.png [3]: https://reao.io/usr/uploads/2022/06/2843784246.png [4]: https://reao.io/usr/uploads/2022/06/2402350658.png 最后修改:2022 年 06 月 12 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏