当前位置:首页 > 修改聊天记录 > 正文内容

带你一步步了解Android微信聊天记录

智商低一等2年前 (2024-09-10)修改聊天记录5173

微信的聊天记录保存在Android内核中,路径如下:
“/data/data/com.tencent.mm/MicroMsg/5a670a2e0d0c10dea9c7a4a49b812ce4/EnMicroMsg.db” `目录下。

说明

1、微信聊天记录数据库它并不是保存sd卡下,而是保存在内核中,手机是看不到此目录,只有root过后才可以看到,至于如何Root这里就不做介绍了,如今手机越来越趋向于安全方面,所以root比较费事

2、数据库保存在data/data目录下,我们需要访问此目录以获得我们需要的信息,直接访问权限还是不够,此时需要进一步获取root权限

3、代码打开数据库,会遇到如下几个问题

(1) 微信数据库是加密文件,需要获取密码才能打开,数据库密码为 《MD5(手机的IMEI+微信UIN)的前七位》

(2) 微信数据库路径是一长串数字,如5a670a2e0d0c10dea9c7a4a49b812ce4,文件生成规则《MD5(“mm”+微信UIN)》 ,注:mm是字符串和微信uin拼接到一起再md5

(3) 直接连接数据库微信会报异常,所以需要我们将数据库拷贝出来再进行打开

(4) 获取微信UIN,目录位置在/data/data/com.tencent.mm/shared_prefs/auth_info_key_prefs.xml中,_auth_uin字段下的value值

(5) 获取数据库密码,密码规则为:MD5Until.md5("IMEI+微信UIN").substring(0, 7).toLowerCase()

4、打开加密数据库,因为微信数据是sqlite 2.0,所以需要支持2.0才可以打开,网上介绍的最多的是用这个第三方net.zetetic:android-database-sqlcipher:4.2.0@aar,但经测试不可行,后来选择用微信开源数据库com.tencent.wcdb:wcdb-android:1.0.0

5、开始查找需要的内容,剩下的就是sq语言了,聊天记录在message表中,好友在rcontact表中,群信息在chatroom表中等,根据自己需求去查找

6、为了更直观的看到表结构去操作,可以用sqlcipher去查看下载地址

开始一步步实现

1、获取root手机,有好多root工具,经过踩坑是一键root不了6.0以上手机的,大家可以去选择其他方案去获取root手机

2、项目获取微信数据库目录路径root最高权限因为只有获取了root最高权限才可以对文件进行操作,通过Linux命令去申请chmod 777 -RWX_ROOT_PATH="/data/data/com.tencent.mm/";申请时调用execRootCmd("chmod 777 -R " + WeChatUtil.WX_ROOT_PATH);

方法如下:

1.png

3、拿到数据库EnMicroMsg.db路径

先看下数据库路径/data/data/com.tencent.mm/MicroMsg/5a670a2e0d0c10dea9c7a4a49b812ce4/EnMicroMsg.db

因为EnMicroMsg.db父级路径不同微信号是会变的,所以需要动态去获取,父级路径生成规则为**《MD5(“mm”+微信UIN)》**,下一步我们需要获取微信的uin

WX_DB_DIR_PATH=/data/data/com.tencent.mm/MicroMsg/

整体路径为WX_DB_DIR_PATH+《MD5(“mm”+微信UIN)》+/EnMicroMsg.db

4、获取微信uin

微信uin存储路径在\data\data\com.tencent.mm\shared_prefs\auth_info_key_prefs.xml中,如图所示

1.png

拿到此文件我们需要xml文件解析才可以获得_auth_uinvalue,解析工具dom4j

2.jpg

5、获取微信数据库密码

密码规则为MD5Until.md5("IMEI+微信UIN").substring(0, 7).toLowerCase()上边我们已经获取了微信uin,接下来需要获取手机IMEI,

获取方法1:在手机拨号键输入:*#06# 即可获取

获取方法2:代码中获取

1.png

接下来需要生成密码

2.jpg

6、复制数据库

为啥要复制数据库呢?因为直接去链接数据库微信会奔溃,所以我们需要将数据库拷贝出来再进行操作踩坑1:数据库复制的路径也需要获取root权限,即Linux 的chmod 777 -R去申请

踩坑2:复制的路径如果是二级目录,需要一级一级去申请

于是我直接放到根目录下了copyPath = Environment.getExternalStorageDirectory().getPath() + "/";

再获取root最高权限execRootCmd("chmod 777 -R " + copyPath);

path=/data/data/com.tencent.mm/MicroMsg/5a670a2e0d0c10dea9c7a4a49b812ce4/EnMicroMsg.db

复制数据库 FileUtilCopy.copyFile(path, copyFilePath);

2.jpg

7、打开数据库

注:网上好多介绍都是用net.zetetic:android-database-sqlcipher:4.2.0@aar去打开的,但经过测试打不开

于是用了微信自家开源的数据库打开了com.tencent.wcdb:wcdb-android:1.0.0,微信还是对自家人友善

1.png

8、演示获取微信聊天记录并上传
可以让后台保存最后上传时间,下次上传新消息时用最后时间取查
注:微信数据库时间精确到毫秒

2.jpg

9、pc端更直观去查看数据库结构可通过sqlcipher去查看下载地址

"/data/data/com.tencent.mm/MicroMsg/5a670a2e0d0c10dea9c7a4a49b812ce4/EnMicroMsg.db"

将数据库EnMicroMsg.db拷贝到电脑上

用SQLit打开

1.png

1.png

1.png

最后祝大家心想事成,有疑问或者需要这类业务的可以咨询本页右下角的“在线客服”。






扫描二维码推送至手机访问。

版权声明:本文由手机数据加工厂发布,如需转载请注明出处。

本文链接:https://www.gaijilu.com/?id=5

“带你一步步了解Android微信聊天记录” 的相关文章

教你如何在智能手机上保护个人隐私

教你如何在智能手机上保护个人隐私

保护个人隐私是每个人都应该关注的问题,尤其是在智能手机使用如此普及的今天。我们的手机里储存着大量的个人信息,如联系人、短信、通话记录、照片、视频、社交媒体账户等等,如果不加以保护,这些信息就可能会被不法之徒窃取、泄露或滥用。那么,怎样在智能手机上保护个人隐私呢?以下是手机数据工厂huifus.com...

微信记录彻底备份教程,换手机一键迁移

全程不用复杂操作,老人也能看懂,每一步都对应截图位置。一、手机直接互传(换手机首选,免费最快)适合:旧手机换新手机、当场迁移所有聊天1新旧手机都连上同一个 WiFi,登录同一个微信号2打开微信 → 点【我】→【设置】3找到【通用】→【聊天记录迁移与备份】4选择【迁移聊天记录到另一台设备】5旧手机勾选...

关闭这几个设置,手机瞬间杜绝监听偷窥

1. 关闭多余定位权限所有无关 APP,全部关掉定位只给地图、外卖临时用拒绝 24 小时跟踪你的行踪2. 关闭相机、麦克风权限小游戏、杂牌软件、工具箱全部禁用相机 + 麦克风防止后台偷偷录音、偷拍3. 关闭自动读取剪贴板杜绝 APP 偷看你复制的密码、验证码、聊天内容隐私再也不被偷偷收集4. 关闭后...

手机隐私防泄露指南,普通人必看

普通人手机隐私防泄露完整指南覆盖日常使用、权限、软件、支付、社交、拍照、定位七大核心场景,简单好操作,普通人照着设置就能大幅降低隐私泄露、被偷拍、被诈骗风险。一、基础权限:关掉所有没必要的授权关闭 APP 过度权限相册、麦克风、摄像头、定位、通讯录、存储、后台弹窗,非必要全部设为「仅使用时允许」或「...

 如何使用iMazing进行照片备份?

如何使用iMazing进行照片备份?

一、准备工作电脑安装 iMazing(支持 Mac / Windows)用原装数据线把 iPhone 连到电脑手机解锁,信任此电脑二、方法 A:单独导出照片(最常用)1. 进入照片界面iMazing 识别手机后,左侧点击照片iMazing2. 选择要备份的照片按 Ctrl+A 全选,或手动勾选可按相...

 如何清理手机中的重复文件?

如何清理手机中的重复文件?

一、安卓(华为 / 小米 / OPPO/vivo)1. 一键清理所有重复文件(照片 + 文档 + 安装包)打开手机管家 / 安全中心 /i 管家进入清理加速 / 空间清理扫描完找到重复文件 → 去清理全选重复项 → 删除(自动保留一份)2. 相册重复照片 / 视频(最占空间)华为:相册 → 相册管理...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。