技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1865|回复: 6
收起左侧

多玩YY聊天记录解析全过程

[复制链接]

4

主题

10

帖子

199

积分

用户组: 小·技术宅

UID
89
精华
1
威望
13 点
宅币
94 个
贡献
64 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-2-26
发表于 2016-5-9 11:26:15 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
再来一发,现在开始!

下载安装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 啦!!

好了,方法都说了,如果自己感兴趣可以按照这个来自己写代码实现!
这个太简单了,我也懒得插图和帖代码了。
就这样啦!!

最后提醒,此帖子内容仅供逆向爱好者交流学习使用!!请勿用作非法用途,被抓了别找我!!!

272

主题

446

帖子

4791

积分

用户组: 真·技术宅

UID
2
精华
61
威望
148 点
宅币
3613 个
贡献
131 次
宅之契约
0 份
在线时间
616 小时
注册时间
2014-1-25
发表于 2016-5-9 13:21:28 | 显示全部楼层
牛逼呀大熊熊,有了妹子的人果然战斗力不同

4

主题

10

帖子

199

积分

用户组: 小·技术宅

UID
89
精华
1
威望
13 点
宅币
94 个
贡献
64 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-2-26
 楼主| 发表于 2016-5-9 14:39:59 | 显示全部楼层
元始天尊 发表于 2016-5-9 13:21
牛逼呀大熊熊,有了妹子的人果然战斗力不同

你妹!!!

0

主题

1

帖子

16

积分

用户组: 初·技术宅

UID
1884
精华
0
威望
1 点
宅币
13 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2016-8-10
发表于 2016-8-10 10:44:43 | 显示全部楼层
本帖最后由 physics 于 2016-8-10 10:46 编辑

小白一枚,按楼主的前两步方法成功看到了自己的聊天记录 但是楼主“于是我在下载的源码里打开宏开关,在接口实现里面将YY传过来的每个参数写到文件里面”这句话始终没有实现,编程技术比较渣,怎么打开宏开关,望楼主指教一下。
贴了一下我的代码,我在sqlite3.h 和.c文件中分别打开宏开关,但是好像没有实现。。。(version 3.14)

宏开关

宏开关

加密函数实现

加密函数实现

0

主题

22

帖子

57

积分

用户组: 小·技术宅

UID
1919
精华
0
威望
0 点
宅币
35 个
贡献
0 次
宅之契约
0 份
在线时间
2 小时
注册时间
2016-8-24
发表于 2016-8-24 21:14:57 | 显示全部楼层
#在这里快速回复#新人学习一下

0

主题

24

帖子

54

积分

用户组: 小·技术宅

UID
2067
精华
0
威望
1 点
宅币
28 个
贡献
0 次
宅之契约
0 份
在线时间
0 小时
注册时间
2016-11-17
发表于 2016-11-17 10:34:26 | 显示全部楼层
支持    !!

4

主题

10

帖子

199

积分

用户组: 小·技术宅

UID
89
精华
1
威望
13 点
宅币
94 个
贡献
64 次
宅之契约
0 份
在线时间
7 小时
注册时间
2014-2-26
 楼主| 发表于 2018-1-16 19:34:11 | 显示全部楼层
physics 发表于 2016-8-10 10:44
**** 作者被禁止或删除 内容自动屏蔽 ****

哥们,解决了么?

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-5-20 12:33 , Processed in 0.108063 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表