外挂基本概念

要理解外挂,首先需要理解网络游戏的数据流。这里所说的数据流定义为游戏本地客户端与游戏后台服务器之间的数据流通。一个数据的产生需要玩家做出对应的操作,然后经过网络传输同步到服务器后台,服务器后台再处理过后再通过网络反馈给玩家。

在此基础上,可以将广义上的外挂定义为:非法窜改游戏数据流的方式。非法指的是没有法律许可,而窜改的方式包括增,删,查,改。

狭义上的外挂就是针对数据链路上的节点的修改。比如窜改客户端的“内挂”,窜改网络数据的“脱机挂”,窜改游戏后台服务器的“私服”。

内存挂实现原理

内挂的目标即为数据链路上的第一个节点:游戏客户端(包含客户端所使用的操作系统)。内挂的原理一般通过增,查,改的方式来实现,而所使用到的工具主要有调试工具(如Ollydbg),反汇编工具(如IDA),内存查看工具(如CheateEngine)。制作内挂,不仅要对操作系统有理解,而且还要深入到游戏引擎,游戏逻辑。

1. 增

以使命召唤OL为例。游戏的设定为武器可以装配不同的配件,正常情况下,M4A1只能装配2个配件。

使用调试器调试游戏,分析武器的配件逻辑,可以发现:每次装备配件时,都会调用一个游戏函数,定义为AddWeaponAttachment(作者自己的定义,下同),而这个函数的调用参数通过不断的调试分析可以猜测为插槽Index以及配件ID,即:

AddWeaponAttachment(SlotIndex, AttachmentID)

额外调用这个函数,即增加一次游戏逻辑的调用,就可以实现M4A1使用多个配件。

封装一下这个游戏逻辑,增加背包,主武器,副武器的判断,就可以形成一个“卡配件”的外挂。

第二个例子。正常游戏逻辑中,点击一次鼠标会触发一发子弹的射击。而在操作系统层面上,每点击一次鼠标游戏就会发送一次鼠标点击的消息,如果在游戏允许的游戏买卖时间范围内增加鼠标点击消息的发送,那么就可以实现武器的子弹加速,这种效果在霰弹枪上面即为明显,可以实现单发射击的霰弹枪变成连续射击,武器致死率大大提升。

2. 查

查,即读取操作。在游戏中有些信息是不会在界面上直接透露给玩家的,但是玩家一旦掌握这些信息就会获得绝对的优势。

以棋牌类游戏的看牌器为例。

由于游戏逻辑的需要,玩家的底牌会在存放在内存中,而通过内存查看工具不断的变更查看条件,就可以在内存中的找到对应的底牌记录,知道别人的底牌之后,玩法就非常随意了。

以FPS游戏的方框透视为例。

游戏逻辑会记录战局中所有玩家的坐标信息,而通过指定的方法读取到敌人的坐标之后,可以用方框将敌人在屏幕中标记出来,掌握敌人的位置可以率先做出预判,进一步可以做成自瞄辅助工具。

3. 改

改即修改,即修改一切和游戏相关的信息,包括游戏数据,游戏代码,游戏文件,改的方法也就是内挂典型的手段。

以DNF为例子,玩家在攻击的时候会有攻击力的叠加。同样通过调试分析,找到角色攻击函数,定义为Attack(Target, Power),参数表示攻击的对象以及攻击力,外挂可以修改这个Attack函数,使得Target为当前区域内所有怪物,Power为无穷大,那么Attack的效果即为全屏倍攻。

以FPS游戏为例,游戏在渲染图像的时候会使用Windows的DiretX模块(DX游戏)。一般来说,在渲染每一帧的时候游戏逻辑会根据由远到近的顺序将当前屏幕内所展示的图像渲染出来,在最终呈现时会根据物体的遮挡关系真实的反映出当前场景,最终觉得当前所看到的画面。外挂可以修改DirectX的渲染逻辑,强制将遮挡关系修改,那么原本应该被遮挡的物体会在屏幕上显示出来,形成人物透视。

制作内挂需要对游戏逻辑和操作系统有一定的认识,必须有扎实的汇编阅读能力以及丰富的脑洞能力,不断的阅读,不断的猜想,不断的组合才能形成功能强大的外挂。

网络封包挂实现原理

网络封包挂的目标即为数据链路上的第二个节点:网络数据。客户端的每一个处理都会以封包形式通过网络传往网络服务器,因此窜改网络数据和内挂会得到相同的效果。使用到的工具即为封包查看工具(WPE PRO)。网络封包会通过客户端和服务器约定的协议传输。一般来说,游戏协议分为上下行协议,上行协议指的是客户端发往服务器,下行协议指的是服务器发往客户端。

1. 增

以CF为例。通过WPE分析游戏内购买武器的协议,游戏的上行协议是请求游戏商城指定武器,游戏的下行协议是服务器告诉客户端指定武器购买是否成功。

那么伪造一条游戏下行协议,里面包含指定武器购买成功的信息,无中生有,那么个人仓库内会多出对应的武器。

2. 删

删除在网络数据层对应的操作可以定义为拦截。拦截对自己不利的协议。比如在RPG游戏中,会消耗“水”补充体力,那么“消耗”的动作就对应一条消耗的协议,如果拦截这条协议,那么就可以实现不消耗“水”而获得体力的补充。

3. 查

查即查询。再次以RPG游戏为例,在第一次进入某个地图区域时,客户端会向服务器请求这个区域内的所有游戏对象,包括NPC,怪,物品等,这些对象会因为游戏剧本需要不一定能直接被玩家感知。而外挂主动向服务器发送这个请求,直接将所有对象标记出来,帮助玩家做出更优的攻略。

4. 改

改和内挂的改是一致的,直接体现就是修改封包的数据。上述的DNF全屏倍功是通过修改客户端实现,而在封包中也可以直接修改封包数据达到相同的效果。

内挂注重的是游戏逻辑,而网络封包挂注重的是游戏数据。相比而言,游戏的每一次更新都会让逻辑代码发生变化,而游戏协议的变动会很小。因此网络封包挂会比内挂有效性会更长些。

封包挂的另外一个优势就是,如果完全掌握了游戏协议就可以实现脱离客户端---脱机挂,脱机挂完全模拟了游戏客户端的所有操作而不占据系统资源。在RPG游戏中,脱机挂的优势很明显。假设一台PC机运行客户端一个小时可以获取到100游戏币,而同时运行两个客户端消耗系统资源只能获取到180游戏币,而同时运行10个脱机挂,获取的游戏币可以达到1000甚至更多。

私服实现原理

私服针对的就是数据流上的最末节点:游戏后台服务器。私服即非官方的盗版游戏服务器。随便在百度上搜索私服,看到的是内容粗糙,但充满各种“神装”的盗版游戏。但一个私服的出现,意味着游戏客户端,游戏协议,游戏后台服务器处理逻辑,游戏后台数据库完全暴露了。目前没有公开的资料显示如何制作一款游戏的私服,私服的出现往往伴随着游戏代码泄露。

在私服里面,可以体验到前所未有的“上帝”体验。以CS游戏为例子,目前公开的材料中有CS客户端,以及CS后台程序,虽然没有源码,但是可以直接调试分析CS的后台程序,找到逻辑中判断人物生存状态的逻辑,实现无敌模式。

常见游戏外挂分类及原理概述相关推荐

  1. 常见外挂分类及原理概述

    外挂基本概念 要理解外挂,首先需要理解网络游戏的数据流.这里所说的数据流定义为游戏本地客户端与游戏后台服务器之间的数据流通.一个数据的产生需要玩家做出对应的操作,然后经过网络传输同步到服务器后台,服务 ...

  2. 游戏外挂的编写原理和思路

    游戏外挂的编写原理(一) 一. 前言 所谓游戏外挂,其实是一种游戏外辅程序,它可以协助玩家自动产生游戏动作.修改游戏网络数据包以及修改游戏内存数据等,以实现玩家用最少的时间和金钱去完成功力升级和过关斩 ...

  3. 手游外挂分类及原理介绍

    一.前言 移动游戏市场近几年突然爆发,收入规模快速增长.根据第三方数据统计,如图所示,国内移动游戏2015年市场规模已达514.6亿.如此火热的市场,必然会吸引大量图谋不轨的坏人.外挂已在移动市场悄然 ...

  4. 常见外挂分类及原理赘述

    外挂基本概念 要理解外挂,首先需要理解网络游戏的数据流.这里所说的数据流定义为游戏本地客户端与游戏后台服务器之间的数据流通.一个数据的产生需要玩家做出对应的操作,然后经过网络传输同步到服务器后台,服务 ...

  5. 游戏外挂反外挂技术简介

    1.游戏外挂分类: ⑴按实现方式 ㈠脱机式: 完全脱离游戏客户端程序,可以与游戏服务器自由通讯的外挂程序,开发难度最大, 普通的100多开,对游戏的危害最大 ,严重破坏游戏市场.影响玩家正常游戏.缩短 ...

  6. 一篇读懂分布式架构下的负载均衡技术:分类、原理、算法、常见方案等

    1.引言 关于"负载均衡"的解释,百度词条里:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个操作单元上进行执行,共同完成工作任务. 负载均衡(Load ...

  7. [转载]游戏外挂原理

    最近同学在折腾外挂 我也就把这篇发上来吧 以前的文章了 也不知道那里来的了..... 1.游戏外挂的原理 外挂现在分为好多种,比如模拟键盘的,鼠标的,修改数据包的,还有修改本地内存的,但好像没有修改服 ...

  8. 游戏外挂的基本编写原理

    游戏外挂的基本编写原理 Posted on 2005年9月17日 23:40 游戏外挂的基本编写原理 本文主要是针对开发游戏外挂程序后期使用的程序开发技术进行探讨,重点介绍的 如下几种在游戏外挂中常使 ...

  9. 初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

    @TOC初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程 [1]什么是windows API Windows API 中文翻译过来就是windows应用程序接口(Applica ...

  10. 游戏外挂的原理及制作 (1)

    转载自: http://www.hackbase.com/tech/2009-09-22/56303.html 在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎 ...

最新文章

  1. Java-Frame
  2. Keras中Callback函数的使用
  3. css的基本操作学习--css样式,选择器,hover,文字属性,文本属性,背景
  4. java版本微信jssdk、微信验证签名demo(Servlet)
  5. 关于NOR FLASH地址左右移的问题
  6. 【操作系统】实验 设计一个按优先权调度算法实现处理器调度的程序
  7. mysql 吧库下的表名都加_MySQL 数据库名、表名、字段名大小写敏感记录
  8. 负载均衡层设计方案(2)——Nginx安装
  9. openresty安装配置 Ubuntu下
  10. 编译器GCC的Windows版本 : MinGW-w64安装教程
  11. Oracle软件安装及手工建库
  12. Struts2升级版本至2.5.10,高危漏洞又来了
  13. delphi7IDE技巧
  14. 漏洞CNNVD-201805-248的复现与提权
  15. 【科来】网络异常行为分析学习笔记
  16. Stack的三种含义
  17. 降龙十八掌-程序员篇
  18. myeclipse过期,注册码
  19. 基于JAVA3D的网络三维技术的设计与实现
  20. JS前端取得并解析后台服务器返回的JSON数据的方法

热门文章

  1. 香农公式说明了什么_香农公式理解
  2. eclipse 的preferences下没有server
  3. Selenium启动项参数设置
  4. html 页面长度单位,css绝对长度单位有哪些?
  5. java pow_Java中Math.pow()的用法
  6. 2022芒果TV算法赛_用户下一个观看视频预测_baseline_CF召回YoutubeDNN
  7. 不懂Web基本原理怎么能学好爬虫。( 二、Web服务器工作原理)(爬虫、反爬虫、服务器、客户端、网络协议 )
  8. fmask云检测 matlab_ENVI5.4中的云检测/掩膜工具
  9. 职场004: 开放心态的意义
  10. win7去掉桌面快捷方式小箭头