多玩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 啦!!
好了,方法都说了,如果自己感兴趣可以按照这个来自己写代码实现!
这个太简单了,我也懒得插图和帖代码了。
就这样啦!!
https://www.0xaa55.com/forum.php?mod=viewthread&tid=1790&extra=page%3D1
多玩YY聊天记录解析全过程的更多相关文章
- 多玩YY语音的面试题:C++中如何在main()函数之前执行操作?
多玩YY语音的面试题:C++中如何在main()函数之前执行操作? 第一反应main()函数是所有函数执行的开始.但是问题是main()函数执行之前如何执行呢? 联想到MFC里面的 C**App类的t ...
- django基础之day08,分页器从无到有,动态思路解析全过程
*********分页器从无到有的全过程,动态思路解析如下:******** 1.通过book_queryset = models.Book.objects.all()[start_num:end_n ...
- DNS解析全过程及原理
DNS解析原理及过程. 当用户访问我们网站一个网页时,他需要经过以下步骤: 1)找到这个网页的存放服务器: 2)服务器将用户的请求信息接入: 3)服务器通过文件路径(URL)查找用户请求网页: 4)用 ...
- DNS解析全过程
浏览器输入一个网址.要訪问该网址必须由DNS解析出相应的server的IP地址. 对于大型站点来说,一个站点相应多台server.那么DNS解析出的可能是进行负载均衡的server的IP地址.DNS解 ...
- DNS解析全过程分析
DNS解析过程 1.检查浏览器缓存中是否缓存过该域名对应的IP地址 用户通过浏览器浏览过某网站之后,浏览器就会自动缓存该网站域名对应的IP地址, 当用户再次访问的时候,浏览器就会从缓存中查找该域名对应 ...
- DNS解析全过程详解
1.Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www.linux178.com 对应的条目,而且没有过期,如 ...
- Android抓包解析全过程
需求原因 在android开发中,遇到socket编程,无法从log日志中查看到与之通讯的socket发送和返回的数据包是什么,这里介绍一个工具,tcpdump工具和wireshark工具查看抓到的内 ...
- 【Android测试工具】Android抓包解析全过程
需求原因 在android开发中,遇到socket编程,无法从log日志中查看到与之通讯的socket发送和返回的数据包是什么,这里介绍一个工具,tcpdump工具和wireshark工具查看抓到的内 ...
- Spring框架之beans源码完全解析
导读:Spring可以说是Java企业开发里最重要的技术.而Spring两大核心IOC(Inversion of Control控制反转)和AOP(Aspect Oriented Programmin ...
随机推荐
- cocos2d-x spine 加载粒子特效
spine骨骼加载粒子效果 将粒子效果加到骨骼上,update位置和角度.h#ifndef __HOMESCENE_H__#define __HOMESCENE_H__#include "c ...
- ie7下div覆盖在iframe上方,ie8就不行,怎么解决
<div style="position:relative;display:inline-block;width:178px;height:90px;z-index:9999;top: ...
- Qt 4.6: A Quick Start to Qt Designer
Qt 4.6: A Quick Start to Qt Designer A Quick Start to Qt Designer Using Qt Designer involves four ba ...
- Ants(思维)
Ants Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12893 Accepted: 5637 Description ...
- Html表格<table>还是须要加入一些标签进行优化,能够加入标题<caption>和摘要<table summary>
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- U盘安装Win7系统教程
U盘安装系统教程: http://wiki.jd.com/knowledge/6699.html
- mac 上搭建SVN
copy from 广东小码哥,M了个J. 在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装 ...
- iPhone APP 扫码下载
移动互联网发展迅速,各种APP的开发都太疯狂了,一般稍大点儿的应用,都会准备多个版本,比如:iPhone版.iPad版.Android版,我们姑且称之为:终端适配. 业务做的再大点儿的,APP还会考虑 ...
- Jsp中使用EL表达式对字符串进行操作
用fn函数:<%@ taglib prefix="fn" uri="http://Java.sun.com/jsp/jstl/functions" %&g ...
- [置顶] 关于CSDN2013博客之星的一些看法
最近一个周,最火的话题当然要数CSDN2013博客之星拉票了. 实话实说,从12月14日开始,我连续5天拉票. 通过QQ群.QQ好友.CSDN文章.给CSDN粉丝发私信等多种方式拉票,真是累死我了. ...