将 Android 上微信的聊天记录导出为 txt.

主要参考这两篇文章:


不需要做的事情大概有这样几点:

  • 不需要将手机 root
  • 不需要使用 Android Studio
  • 不需要使用 re 管理器
  • 不需要修改安卓虚拟机的 IMEI 码


需要做的事情整个步骤如下所述:


如果我们已经有手机的 root 权限,那我们可以直接在手机连接至计算机的情况下使用 adb 来将 /data/data/com.tencent.mm/MicroMsg 的某个 md5 子目录下的 EnMicroMsg.db 拷贝至计算机。

adb devices
adb shell
adb pull /data/data/com.tencent.mm/MicroMsg/xxxx/EnMicroMsg.db .

使用 adb devices 确认 adb 能够发现我们的手机,

adb shell 可以在交互式命令行下找到文件的具体位置,

然后使用 adb pull 来将对应位置处的文件从手机拷贝至计算机。


但是大概率我们是没有对手机做过 root 操作的,

除了冒险 root 手机之外我们还有其他的方法,那就是使用安卓模拟器。

这里我们使用 Genymotion. 下载安装并运行 Genymotion,并创建与手机型号一致的虚拟机。

因为虚拟机和真机的架构有点不同,为了安装微信 apk,我们需要下载与虚拟机相应版本的 ARM_Translation ,并拖拽至运行中的虚拟机进行安装。

把微信官网的 apk 拖拽至运行中的虚拟器中进行安装,这样有 root 权限的虚拟机上就可以运行微信了。


我们将手机上目标用户的微信聊天记录备份至计算机,然后在虚拟机上登录微信,并将聊天记录备份进行同步。

注意虽然聊天记录备份也是后缀为 .db 的文件 Backup.db,但是我们无法用相同的方式打开查看。

现在我们使用 adb 将 /data/data/com.tencent.mm/MicroMsg/ 处的 EnMicroMsg.db 文件拷贝至计算机。

这是一个加密的 SQLite 文件。


接下来我们使用 sqlcipher.exe 打开此数据库文件,但是需要输入相应的密码。

sqlcipher.exe 可以在这里下载:

密码的计算方式需要查看手机的IMEI 和 微信的 uid。

微信的 uid 通过 chrome 自带插件查看网页微信使用中产生的 Log:

而手机的 IMEI 可以通过在拨号键盘上输入: *#06#

最后将 IMEI 和 uid 进行拼接,并做MD5计算:http://tool.chinaz.com/tools/md5.aspx

在计算时使用 32位[小] 选项,取计算结果的前7位即是数据库文件密码。


至此,我们就可以愉快地查看数据库内容啦。

message 表里数据导出为 csv 就可以愉快地做数据分析了。