多玩YY聊天记录解析全过程
再来一发,现在开始!下载安装YY,观察YY目录,很明显的发现了sqlite3.dll,这个数据库很多很多很多软件都在用,简单小巧且开源。
删除sqlite3.dll 进入YY,历史记录不能正常显示,基本确定YY在使用sqlite3.dll
下一步:在磁盘上找YY的数据库文件
于是,在 C:\Users\用户名\AppData\Roaming\duowan\yy\imgroup\‘xxx’\yydb 目录下发现了 xxx.yydb文件,这就是YY的数据库文件
用UE打开发现这个是个加密的文件,很明显经过加密的,现在的目标就是从这个加密的数据库中拿到聊天记录。
思路:由于YY直接使用了sqlite3.dll,为了简单方便起见,考虑用YY自己的sqlite3.dll读取YY的数据库,以达到获取YY聊天记录的目的。
实验:我自己在网上下载了一个sqlite3源码编译,生成sqlite3.dll,替换YY的sqlite3.dll(注:sqlite3源码里默认是不包含加密模块的,只有加密接口的宏开关,需要加密,自己打开宏开关去实现接口进行加密)我生成的sqlite3.dll当然不包含加密模块,经过观察,YY的聊天记录是存储在服务器上的,每次新安装YY,随便打开个联系人,点击查看聊天记录,YY会从服务器下载聊天记录,并存储在本地数据库中。懂了么?这意味着什么??
好吧,不卖关子,想想YY的sqlite3.dll,肯定自己实现了加密接口,YY肯定会自己调用这个接口的,那么我自己生成的sqlite3.dll没有这个接口,替换过后,YY调用加密接口会失败,两种可能:1.加密不成功,存储明文数据库 2.YY检测到错误,返回并退出! 我的实验结果是第一个,我得到了未经加密的数据库文件,哈哈,用可视化工具打开直接可以看到聊天记录!
下一步:调用YY自己的sqlite3.dll获取聊天记录。
我经常用sqlite3,对sqlite3很熟悉,用eXeScope打开YY的sqlite3.dll,一眼就发现了一个接口:sqlite3_key,这个接口默认是没有的,很明显,这是YY自己实现的加密接口,我也懒得去分析具体算法了!!于是我在下载的源码里打开宏开关,在接口实现里面将YY传过来的每个参数写到文件里面,就这样,轻松得到了YY的数据库密码,接下来就不用说啦,调用YY的sqlite3.dll,开源的,可以去看每个接口的官方注释,网上也有相当多sqlite3的用法。so easy 啦!!
好了,方法都说了,如果自己感兴趣可以按照这个来自己写代码实现!
这个太简单了,我也懒得插图和帖代码了。
就这样啦!!
最后提醒,此帖子内容仅供逆向爱好者交流学习使用!!请勿用作非法用途,被抓了别找我!!! 牛逼呀大熊熊,有了妹子的人果然战斗力不同 元始天尊 发表于 2016-5-9 13:21
牛逼呀大熊熊,有了妹子的人果然战斗力不同
你妹!!! 本帖最后由 physics 于 2016-8-10 10:46 编辑
小白一枚,按楼主的前两步方法成功看到了自己的聊天记录:lol 但是楼主“于是我在下载的源码里打开宏开关,在接口实现里面将YY传过来的每个参数写到文件里面”这句话始终没有实现,编程技术比较渣,怎么打开宏开关,望楼主指教一下。
贴了一下我的代码,我在sqlite3.h 和.c文件中分别打开宏开关,但是好像没有实现。。。(version 3.14)
#在这里快速回复#新人学习一下 支持 !! physics 发表于 2016-8-10 10:44
**** 作者被禁止或删除 内容自动屏蔽 ****
哥们,解决了么?
页:
[1]