msg2.0.db_msg3.0.db怎么查看_msg.db在哪里

电脑杂谈  发布时间:2017-04-27 07:25:00  来源:网络整理

msg3.0.db怎么查看_msg.db在哪里_msg2.0.db

看了论坛里几篇有关QQ2010本地聊天记录文件Msg2.0.db的相关分析后,启发很大,于是在以前分析QQ协议的基础上继续深入分析了下,第一次发帖,希望大家拍砖。msg2.0.db

首先看了testada的帖子,很赞同其本地消息采用公钥加密的分析,这样服务器其实就只做个解密的工作,如果解密成功就返回给客户端,并不需要保存任何额外信息,当然解密成功也要验证,后面会说到。

为了验证testada的分析,用OD对ReadFile和SetFilePointerEx函数下断,当然这两个函数调用很频繁,所以需要过滤句柄,以Msg2.0.db的句柄为条件,下条件断点,然后执行查看聊天窗口的聊天记录的动作,于是两个函数会相继被断下,再配合查看Msg2.0.db文件二进制内容,可以确定info.dat、index.dat和content.dat文件的内容及格式(分析二进制文件),当然还需要对QQ的解密函数下断,以确定密钥的值,这个过程不难,可以对ReadFile读到的内容下硬件断点,会发现解密函数。

通过上面的步骤,基本确定了两件事:密钥和聊天记录密的加密数据。由于密钥是固定的,与Msg2.0.db文件相关,这个结论应该不需要什么怀疑,所以我们就有了定位QQ登录过程中密钥的方法;其次,我们可以在Msg2.0文件中定位相应账号的info.dat等文件。

于是接下来做两件事:分析Msg2.0.db文件格式,寻找报文中的密钥。

分析Msg2.0.db文件的方法就是分析其二进制内容,这点听起来似乎有点难,其实不然,先删除QQ目录下的该文件,然后重新登录,会再生成一个该文件,这是最简单的文件了,也不大,用UE查看其二进制会发现一些东西,在其4200H偏移出是一个个大小为80h字节的数据结构,通过统计可以发现其规律,名字啊,大小啊什么的。通过增加聊天记录,对于前后的变化也能发现其他东西,这个分析过程就不多说了。

得出的结论是,加密数据确实存放在content.dat中,且那些内容加密哪些内容不加密也很容易看出来,而index.dat的格式更简单,就是些序列偏移什么的,事实上我在分析Msg2.0.db文件时花了很多时间,最后发现有更简单的方法。sethseth的解包程序给了我很大启发,发现Msg2.0.db只不过是个Structured Storage格式,可以去了解下相应的文档,网上有个工具Structured Storage View可以很清晰地查看Msg2.0.db文件,目前最新版本是3.3.1,这个就是最简单的方法,确实简单。

弄清了msg2.0.db的眉目,我们接下来就是定位密钥,这个密钥既然是服务器返回的,我们理所当然是到报文中搜索,当然你需要一个解密报文的工具,或者直接去钩挂解密接口,因为报文是被加密的,前者需要你输入密码来解包,后者也不难,钩挂解密接口再做个log就行;反正是弄到了明文,于是一搜索发现在紧接着30报文之后的一个交互中,如果你对QQ协议不了解的,可能没法理解。msg2.0.db这样定位确实很容易,重点是我们知道了密钥是什么,定位到服务器返回的密钥,很自然也能定位到客服端发送的内容,事实上这个发送的内容就是Matrix.dat的一部分,是它的最后38H字节内容,所有字节跟0xc2做一个异或运算就得到了。

通过对QQ2009SP5之后所有版本的分析,可以发现在2010之前(如果我没记错的话),QQ利用a4报文交互这个密钥,而2010正式版和SP1版则没有a4报文,改成了30报文之后的012C报文来进行交互,嘿嘿,变化不是很大。

到此为止,我们已经验证了其聊天内容使用服务器返回的密钥进行加解密,而是否是公钥则无法确定,但个人感觉应该是不离十。这个密钥自然是保存在Matrix.dat里的。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-43741-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...