【求助】微信拉黑后再删除,还能查到历史聊天记录吗

#1
一个朋友的问题,拉黑,然后删除联系人同时清空聊天记录,之后如何取证,查看和对方的聊天记录?在华为手机上操作的。

我理解现状应该是:
1.清空聊天记录后,数据应该是软删除,或者数据并未被粉碎。有可能通过数据恢复软件进行恢复。这个第一个要解决的难题
2.手机微信的聊天记录是存放在加密的sqlite库中。就算恢复成功了,也需要解密数据库才行,这是第二个难题

万能的t00ls,有没有啥建议

评分记录

2026-05-12
#2

微信聊天记录恢复:技术路径分析

你的理解方向是对的。微信对联系人的"删除"和"清空聊天记录"在数据层面是软删除,消息体本身未必被覆写。以下是具体的技术路径:


一、数据存储位置

华为鸿蒙/Android 微信聊天记录核心路径:

/data/data/com.tencent.mm/MicroMsg/[32位用户名哈希]/EnMicroMsg.db

关键点:

  • EnMicroMsg.db 是加密的 SQLite 数据库(SQLCipher)
  • 删除联系人后,该用户的 userinfo 表记录被移除,但 EnMicroMsg.db 中的消息记录通常不会同步删除
  • 彻底清空聊天记录时,微信会在 UI 层删除记录,但数据库层面的覆写取决于是否触发 GC

二、解密数据库(核心难点)

微信数据库使用 AES-128-CBC 加密,密钥生成逻辑:

key = MD5(IMEI + UIN + "WeChatSalt")

实战中需要获取:

参数 获取方式
IMEI 拨号界面 *#06# / 华为 HiSuite / 基带固件提取
UIN shared_prefs 目录下的 auth_info.xml 或 account.xml
"WeChatSalt" 固定字符串

注意:华为 EMUI/HarmonyOS 从某版本后对 IMEI 进行了加密存储,直接读取可能返回乱码,需要 root 后从 TEE 可信执行环境提取,或使用 mprop 修改 read-only 属性后获取真实值。


三、恢复步骤

1. 获取 root 权限(华为设备通过 Bootloader 解锁或漏洞提权)
2. 提取 EnMicroMsg.db 文件
3. 提取 IMEI + UIN 参数
4. 计算数据库密钥
5. 使用 sqlcipher 解密数据库
6. 使用工具解析聊天记录(如 WeChatDatabaseDecoder)

四、你的两个难题的解法

难题1(数据恢复)

  • SQLite 删除只是打标记,数据块仍在 .db 文件中
  • 直接 copy 出的数据库即可读,不需要额外数据恢复软件
  • 如果清空后手机有过大量写入,覆盖风险才会变高

难题2(加密数据库)

  • 核心在于获取正确的 IMEI
  • 如果 IMEI 无法获取,可尝试从微信备份文件(PC端备份或手机端迁移文件)寻找未加密副本
  • 部分华为鸿蒙系统存在漏洞可绕过锁屏直接访问应用数据

五、实战工具推荐

工具 用途
sqlcipher 命令行解密 EnMicroMsg.db
WeChatDatabaseDecoder (GitHub) 一键提取脚本,需要 Java 环境
Folly 华为设备 ADB 提权辅助
Objection 运行时手机应用数据导出

六、成功率影响因素

  • 删除后手机写入量越大,成功率越低
  • 华为鸿蒙系统的EROFS文件系统对数据残留有一定影响
  • 如果开启过微信自带的"彻底删除聊天记录",概率大幅下降
  • PC端有备份的情况下优先从备份恢复

你有目标设备的 root 权限吗?这是最关键的前提条件。

2026-05-12
#3
删除联系人同时清空聊天记录,对应的操作,应该是物理删除SQLite数据条目吧,不是逻辑删除?
2026-05-12
#4
物理上你朋友手机对应删除的那个人的聊天记录的对应的sql文件中的chat_md5的记录已经删除了,无法被恢复,目前只有找到你朋友删除的那个人的手机,然后通过他的手机中的聊天记录来恢复你朋友手机中的聊天记录,具体操作方法可以查看这篇文章:https://zhuanlan.zhihu.com/p/721467621,实测可行
2026-05-27
#5
做过一段时间取证软件设计 原来微信好友删除一段时间后 随着时间推移越久恢复的概率越低了