最近一直在研究Xposed等一些hook框架,进行学习做一些demo,这次就正好拿微信练练手,学习学习,也可以学习微信手机本地数据库的表结构设计等。
好,废话不多说,直接开干。
前提是你的电脑已经安装了adb相关程序,如果你本身就是安卓开发者,想必肯定安装了Android Studio,那里直接就有adb相关程序。其次,你准备一台
已经root过的安卓手机(要安装的有使用过的微信应用,不然没有数据可看),不建议用小米系列等,比较root比较麻烦。这里像360手机助手就有root功能,怎么root看你自己了。
步骤一:查找到微信数据库
电脑连接手机,打开命令行,输入 adb shell 进入shell 命令
如果提示这个错误 error: unknown host service 说明你的adb还是有问题的,正确的如下图
这种基本命令跟数据为什么在data下就不解释了,这样就进入了data/data目录下
当你再操作时会发现如下错误
这个意思是你当前没有权限,这时我们来获取超级权限,输入su root
然后输入ls,就会查出所有的文件,根据包名找到微信,微信的包名大家都知道,是 com.tencent.mm
这时我们就看到了微信的一些文件,有兴趣的可以去看看其他文件里的东西,这里我们需要打开第一个文件,叫MicroMsg。打开它
这里像这样很长一串的MD5加密后的字符串就是你这里使用的微信用户的相关微信数据了,我这里之所以两个,是因为我用过两个用户登录了微信,微信分别存储了下来
再次打开这个文件,我们就可以看到很多以db结尾的数据库了
这里我们需要用到EnMicroMsg.db这个数据库,先拷贝一份出来到sdcard
此时在手机里就能看到这个EnMicroMsg.db文件了,移动到桌面来,到这里我们的第一步就已经完成了。是不是很简单。
步骤二:使用sqlcipher打开EnMicroMsg.db文件
先运行sqlcipher,点击File 一> OpenDatabase 一> 选择桌面的那个EnMicroMsg.db文件,这时会出现这样一个对话框
这里是要求我们输入密码,因为微信本地数据库是加密的,那么密码是什么呢,规则很简单
具体如下:
(手机IMEI + 微信uin )取MD5的前7位
手机的IMEI获取:手机拨号盘输入:*#06# ,你或者用android代码获取可以,怎么都行
微信uin的获取,我是通过网页版微信,我用的是win10的那个Edge浏览器,打开F12开发人员工具,选择网络,然后随便操作或者聊天,就可以看到了
然后百度打开在线md5加密:输入IMEI+wxuin,进行加密,选择32位小写的前七个字符串即可;
然后将这七位字符串输入到sqlcipher中,就顺利的打开了
接下来就可以愉快的查看表结构了,还可以选择Browse Data查看数据,也可以选择Execute SQL执行sql语句了。
到这里就已经彻底打开了微信手机本地的数据库了,其它几个数据库,我也用同样的方式打开了,你们也可以试试,仅供大家学习参考使用,其他用途后果自负。
本人个人原创,如有雷同,纯属巧合,或者与本人联系,做改动。请转载或者CV组合标明出处,谢谢!(如有疑问或错误欢迎指出,本人QQ:752231513)