本文章记录一下自己研究的和总结网上以前旧的微信聊天记录获取
获取手机微信聊天信息,需要较高的系统权限。手机要ROOT或者类似小米的企业模式也是可以的。不过小米的企业模式开通需要有一定的门槛。这里实现的环境是: 红米8A刷 自定义的ROM(Android 9.0)
获取微信聊天记录整体思路图:
1、微信数据库存放地址
微信本身:/data/data/com.tencent.mm/MicroMsg/md5("mm+uid")/EnMicroMsg.db
微信分身:/data/user/999/com.tencent.mm/MicroMsg/md5("mm+uid")/EnMicroMsg.db (小米MIUI系统,其他手机的分身没研究)
2、微信数据库密码
md5(手机imei + uin(auth_info_key_prefs.xml里的auth_uin))前7位字母要小写
手机imei 的值这里有4种情况可能IMEI1或者IMEI2或者MEID或者1234567890ABCDEF ----这里是容易踩坑的点
auth_info_key_prefs的地址:/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml 分身同理
3、主要的几张表:
用户个人信息表:userinfo
好友表:rcontact
好友头像表:img_flag
群聊表:chatroom (群名字在这个好友表 rcontact)
聊天信息表:message (所有聊天信息都在这个表)
图片表:ImgInfo2
4、图片、语音、视频、文件获取及存放地址
图片:/data/data/com.tencent.mm/MicroMsg/MD5(mm+uid)/image2文件夹下。例如:THUMBNAIL_DIRPATH://th_2f83f2451c75425d7cba327fd40b112d,即图片在2f/83/文件夹下。
语音:/sdcard/Android/data/com.tencent.mm/MicroMsg/md5值(这个不知道算法)/voice2文件夹下imgPath值的MD5取第1到2位+"/"+md5取第3到4位+"/"+msg_imgPath的值+".amr",例如"6c/5b/msg_040949010820c1aa467cc0d105.amr"。
视频:直接在/sdcard/Android/data/com.tencent.mm/MicroMsg/md5值(这个不知道算法)/video文件夹
文件:/sdcard/Android/data/com.tencent.mm/MicroMsg/Download文件夹下
技术实现
注意操作微信数据库时不要直接连接数据库,否则会造成微信卡顿闪退!!!!!(这里可以提供一下思路,把数据库拷贝出来,然后在拿数据,当拿完了数据,才再次去拷贝最新的数据库,减少拷贝数据库的操作)
打开微信数据库:借助库:'com.tencent.wcdb:wcdb-android:1.0.0'
获取微信数据库密码
获取uid
然后开启你的为所欲为之为所欲为吧