PC微信逆向:两种姿势教你解密数据库文件腾讯云开发者社区

所有的数据库文件都是经过AES加密的,AES的密钥是32位,而且所有数据库文件共用一个密钥,我们需要找到那个AES密钥才能进行解密,然后才能对数据库文件进行操作。

在API断下之后怎么去找数据库的密码呢?可以根据AES的密钥长度为32位这个线索,32也就是十六进制的20,时刻注意20这个数字!

另外,在解密数据库的call中至少需要两个参数,一个是AES的密钥,另外一个是需要解密的数据库文件的路径。

还有一种方法是在内存中搜索数据库文件的名字,然后下访问断点。这种方案也是可行的。

如果出现了这个错误,需要修改一下设置

将StrongOD和OD本身取消忽略所有异常,这个错误是因为多线程访问冲突引起的。

在CreateFileW的返回地址下断,直接F9运行,CreateFileW这个API我们是不需要看的

CreateFileW断点断下来,那么现在应该怎么跟呢?肯定不能一直往下单步,虽然单步也能达到目标。

直接找到第四个返回地址

这个函数传入了三个参数,虽然三个参数都没有什么价值。但是这个call稍微往下拉,你会发现一个字符串

这个函数的作用应该就是用来提示错误的,一般比较大的工程都会将错误提示信息写成一个函数,报错的时候会提示哪一个模块的哪一个cpp的哪一行出错了,以便最快定位到错误点。

再往上看会发现一个je,用来跳过这个错误

根据这个错误提示的内容,我们现在可以百分百的确定打开数据库的操作已经完成!

这里是我们遇见的第一个函数,看参数就知道不是我们想要的了,跳过继续往下

第二个函数将数据库名和一个保存零的指针入栈,也跳过

第三个函数就很可疑了,这个call将三个参数压入堆栈,其中eax是一个结构体,里面保存一个地址和0x20这个数字,AES的密钥正好是32位的,也就是十六进制的0x20。

数据窗口跟随,前两行0x20个字节就是数据库的密钥了

各个参数含义如下:

这份代码原作者是谁我已经不记得了反正被拷来拷去拷了很多次了

运行程序

最后生成的dec_ChatMsg.db就是解密出来的文件,对比一下解密前后的文件

解密前

解密后看到这个MAGIC头,不用验证我就知道已经解密成功了。接下来还是验证一下结果

用Navicat新建一个SQLite连接,

选择解密后的数据库

可以看到所有的表数据已经出现了。解密完成

找到了密钥之后就结束了吗?这个密钥目前是写死的,如果变化的话,我们又要重新找,然后再次输入。所以我们需要动态获取到数据库密钥。想要动态获取数据库密钥,就必须定位到数据库密钥的基址。步骤如下:

直接在CE中搜索之前找到的密钥

接着依次搜索这两个地址,找到了一个绿色的基址

动态获取数据库密钥的代码如下:

如果我们直接拿到密码,然后对数据库进行解密,再查询好友信息,这种方法当然也是可以的。但是拿到的数据并不是实时的。

如果我们拿到这个数据库的句柄,就能实时的去查询好友的详细信息了,而且也不需要进行解密和获取数据库密码的操作了。

接着来到CreateFileW的返回地址处,点击K查看调用堆栈

经过排查,这个地址的call最像我们需要的找的call,在这个call的地址下断,点击F9运行

程序断下,此时ecx指向数据库文件的路径

edx指向一个空的缓冲区,那么这个就非常像我们要找的call

单步步过这个call,发现缓冲区里写入了一个地址,那么就可以确定这个就是我们要找的call,只要我们HOOK这个地址,那么就能拿到所有的数据库文件的句柄了。而数据库的名称就在堆栈里,可以自己去找到偏移然后获取数据。

至于代码,等我研究下怎么调用SQlite再告诉你们,最后附上用代码解密数据库的工程。

THE END
1.微信聊天记录在哪个文件夹?存储位置是什么?电脑手机在tencent里包括所有腾讯应用,微信名为MicroMsg,双击进入。在MicroMsg里,你会看到一个较长且包含32个字符的文件夹,这个文件夹就是我们要找的,任意选择一个点击进入。在这个文件夹里,image2存放的是聊天过程中产生的图片,而video则存放的是小视频,video2则存放的是语音。https://m.sohu.com/a/782074313_121894855
2.导出微信iOS数据库微信红包(发) type: 49 content: <msg><appmsgappid=""sdkver="0">微信红包<des>我给你发了一个红包,赶紧去拆! 祝:恭喜发财,大吉大利!</des><action/><type>2001</type><showtype>0</showtype><soundtype>0</soundtype><mediatagname/><messageext/><messageaction/><content/><contentattr>0</conhttps://www.jianshu.com/p/68e9f22f9680
3.loca)哪几个文件夹内的东西可以删?微信的micromsg文件爱问知识人如果你不要微信里的记录的话是可以全部删除的 https://iask.sina.com.cn/b/6Y4VhgNEAr.html
4.真是郁闷!微信分身保存的图片,在手机里怎么找啊?木心的心 发表于 2018-1-12 16:18微信应用双开保存图片视频位置,方法1:在桌面上打开相册-顶部选择相册,一直下拉选择其他相册里面WeiXin文 主要是用微信打开相册里看不到 1970-01-18 赞wier 花15块刷回来11.0.2感觉真舒畅 04-09· Redmi Note7 7 赞 Mi:Ji8NX4 这是什么骚操作一天才给这点 https://www.xiaomi.cn/post/2744945
5.wechatMsg:WechatMsg是一个简单的上链的微信留言本,前端采用了wechatMsg:WechatMsg是一个简单的上链的微信留言本,前端采用了火花小站的微信公众号测试 ,后端对接火花接入平台。 共56个文件 java:14个 md:6个 ftl:6个 Java 需积分: 50117 浏览量2021-05-11上传1.02MBZIP 微信留言板 微信留言板是一个利用微信公众号网页,将用户的留言写到区块链上的一个应用, 本应用https://download.csdn.net/download/weixin_42126274/18585736
6.GitHubThis branch is8 commits behindLC044/WeChatMsg:master. README License 我的数据我做主 前言 我深信有意义的不是微信,而是隐藏在对话框背后的一个个深刻故事。未来,每个人都能拥有AI的陪伴,而你的数据能够赋予它有关于你过去的珍贵记忆。我希望每个人都有将自己的生活痕迹?https://github.com/v2hack/WeChatMsg
7.WeChatMsg(微信聊天记录导出工具)v1.0.4最新版WeChatMsg是一款专门用于导出微信聊天记录的工具。这款软件在近期逐渐流行起来,以其简便的操作和多格式导出功能受到用户的欢迎。用户可以将微信聊天记录从手机备份到PC端微信,然后导出为Docx、txt、html、CSV等格式,方便用户管理和存档微信数据。 软件特点 多格式导出:支持将微信聊天记录导出为Docx、txt、html、CSV等多https://www.heishou.org/d/331108
8.微信聊天记录导出WeChatMsg是一个开源项目,主要功能有:解锁Windows本地数据库 还原微信聊天界面:文本 图片 拍一拍等https://www.52pojie.cn/thread-1916021-1-1.html
9.WeChatMsg留痕提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告。支持导出视频、表情包 前言 我深信有意义的不是微信,而是隐藏在对话框背后的一个个深刻故事。未来,每个人都能拥有AI的陪伴,而你的数据能够赋予它有关与你过去的珍贵记忆。我希望每个人都有将自己的生活痕迹?https://www.hereitis.cn/articleDetails/2052