QQ游戏基本通信机制(QQ游戏外挂编写)

 

QQ游戏基本通信机制(QQ游戏外挂编写)

 

作者:骆归,QQ:33761697, email&msn: luolovegui#163.com

一、前言

我最近两年坚持在写一个QQ欢乐斗地主外挂,由于各个方面的原因,总是走走停停,外挂还没有写完,倒是对QQ游戏的整个通信机制非常了解了,一年前就可以抓取QQ游戏大厅里各个子游戏的所有实时通信数据(游戏,聊天,其它三类数据),并且可以实现对数据的更改,我一直感觉是非常有意义的,今天特别写出来,让大家一起学习。

 

二、QQ游戏通信机制

在此,我说一下QQ游戏大厅的基本通信模式,QQ游戏大厅里的各个子模块游戏是不直接与服务器通信的,在这里我不讨论大厅本身的机制,因为我只关心游戏通信过程中的数据。其实QQ子游戏本身是不直接与服务器通信,而是由大厅做通信中转,简单的画个图,数据流就是这样走的:

 

 

图画得不好,但能说明问题,就是所有最下层的各个子游戏的数据通信都是通过QQ游戏大厅做中转的,相当于QQ游戏大厅就是一个代理服务器,完成子游戏与QQ游戏服务器的数据通信工作。我这里不去讨论QQ游戏这样的设计的利与弊,因为与我这文章没关系。

 

简说一下:

QQ游戏大厅与QQ游戏服务器之间是SOCKET通信机制(网络概念);

QQ游戏大厅与各个子游戏之间是进程间通信机制(本地概念)。

 

三、数据抓取

基本抓包:做过外挂的朋友都知道,一般的游戏数据外挂都是通过API HOOK一些socket系列函数或者走SPI路线,这样我们抓住原始的数据包(反正抓住原始数据包是最终目的),然后分析数据包协议,最终实现外挂。

 

当我们看了我画的图后,知道了QQ游戏的通信机制,发现我们是可以在两个数据通信点获取数据的,就是上图中的“数据抓取点1”与“数据抓取点2”,在“数据抓取点1”中,我们会接收到各个子游戏的数据,而且还有QQ游戏大厅本身与服务器之间的通信,数据量会非常多,分析起来也比较麻烦。当然,如果写QQ游戏大厅本身的外挂的话,就必须在这里做了。以我个人的水平,可能只能前面说的基本抓包方式。

 

由于我们是写QQ子游戏的外挂,所以最好的数据抓取方式就是直接从“数据抓取点2”的位置抓取,因为QQ游戏大厅要与适应各个子游戏的通信,所以统一了通信模式,相当于各个子游戏只是QQ游戏大厅的一个插件,只不过不在一直进程内而已。

 

因为QQ游戏的通信机制是按图上设计的,要玩游戏,必然要完成QQ大厅与子游戏之间的数据代理通信,必然要实现进程间通信的工作。所以,只要知道了此进程通信的机制,就可以实现数据的抓取。

 

四、结果

功夫没有白费,我花了一段时间,分析出了他们之间的数据通信机制,由于特殊原因,我不方便说得太细,简单描述一下,其实在QQ游戏大厅的各个子游戏中,都统一实现了一个COM接口,我们只要得到了这个COM接口的实例,就可以直接与QQ游戏大厅实现通信了,比如说模拟数据发送等。而且取到的数据统一都是没有加密的。

 

QQ游戏数据主要分为三类,分别为:游戏数据,聊天数据,其他数据(主要是广告),其中游戏数据我们比较感兴趣,当然,每个游戏都有自己的通信协议,那是必然要分析的,不过感觉很容易分析。

 

五、后续

大家可以随意转发此文章,但请保留文章的出处,以及注意完整性。

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 5

打赏作者

luolovegui

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值