热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

QQ游戏基本通信机制(QQ游戏外挂编写)作者:骆归,QQ:33761697,email&msn:luolovegui#163.com一、前言我最近两

 

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

 

五、后续

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


推荐阅读
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • php设置数组大小_【大厂必备】2020超经典PHP面试题
    结合我自己这段时间的面试情况,面对的一些php面试题列举出来,基本上结合自己的看法回答的,不妥的地方请大家指出去,与大家一起 ... [详细]
  • destoon会员注册提示“数据校验失败(2)”解决方法【PHP】
    后端开发|php教程destoon,会员注册,数据校验失败,后端开发-php教程很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:“数据校验失败 ... [详细]
  • 1.webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用(1) ... [详细]
  • Rubyonrails开发人员在这里。此问题曾被问过。 ... [详细]
  • 修正我的GitHub commit 数据
    早晨上班,滴滴搭车里,我在掘金这个帖子看到大家晒自己的Github活跃记录,我也晒了下自己的记录。不过太少了。有遗漏的commits状况这也让我知道,自己觉得自己很忙的,实际上提交 ... [详细]
  • 【编程语言之Go介绍与环境安装】
    Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。  ... [详细]
  • [我们是谁?] ... [详细]
  • 如何搭建一个 MySQL 分布式集群 ... [详细]
  • 用React.jsEgg.js造轮子全栈开发旅游电商应用百度网盘最后附上下载链接百度网盘下载链接:链接:https:pan.baidu.coms1X0RBk0Gb ... [详细]
author-avatar
影帝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有