文章目录

  • 一、外挂分类
    • 1)辅助版(需要依赖客户端,不能独自生效),根据作用范围分为:
      • (1)专用插件:so、dylib
      • (2)通用工具:内存修改器、变速器、按键精灵、模拟器、抓包工具
    • 2)破解版:脱机挂、受损客户端
  • 二、外挂实现原理
    • 1)辅助版本外挂实现原理(基于游戏客户端动态修改游戏数据类型)
      • (1)专用插件
      • (2)通用工具
    • 2)破解版外挂实现原理(预先静态修改后的独立游戏客户端,可以分为:逆向分析游戏协议、对游戏客户端修改后实现的游戏破解版,可以根据修改后的客户端数据的不同分为逻辑代码和数据资源)
      • (1)逻辑代码
      • (2)数据资源

一、外挂分类

1)辅助版(需要依赖客户端,不能独自生效),根据作用范围分为:

(1)专用插件:so、dylib

  • 定义:
    因依据不同平台而不同,在Android下为so文件形式,在iOS下为dylib文件形式。
  • 举例:
    在安卓平台上盛行一时的叉叉助手和圈圈助手,在iOS上也出现过888辅助,针对多款热门手游注入不同的dylib模块来实现无敌、秒怪功能。
  • 特点:
    这类专用插件外挂的功能较为灵活,一般可随时开启或关闭

(2)通用工具:内存修改器、变速器、按键精灵、模拟器、抓包工具

1)内存修改器
2)变速器
3)按键精灵
4)模拟器
5)抓包工具

2)破解版:脱机挂、受损客户端

1)脱机挂:作者基于对游戏协议的分析,自行开发的一个游戏客户端。这类客户端通常用于多开刷副本,收益巨大,工作室对这类外挂的需求较大
2)受损客户端:外挂基于对正版客户端的修改实现的,一般是一类破解版外挂固定开启一类外挂功能,游戏过程中无法关闭

二、外挂实现原理

1)辅助版本外挂实现原理(基于游戏客户端动态修改游戏数据类型)

(1)专用插件

  • 定义
    属于定制类外挂,每个外挂只针对一款游戏
  • 实现概况
    利用注入技术将功能模块注入游戏进程空间中,并执行功能模块的入口函数。
  • 不同平台形式
    安卓:Zygote注入、直接ptrace注入技术
    IOS:利用Cydia框架注入dylib模块
  • 执行流程
    外挂功能模块在被注入游戏进程后,会执行Hook操作实现外挂功能。外挂作者需要你想分析游戏代码逻辑,找到一些游戏功能函数的地址,比如怪物扣血处理函数,然后在外挂功能模块中通过Hook操作来挂钩相应函数、改写参数或者通过调用逻辑(多次回调或者异步调用)
  • HOOK的解释
    在底层汇编,Hook操作可以理解为在特定的代码地址,增加跳转指令跳转到外挂作者的自定义函数中。(可以利用优秀的第三方库:例如substrate)
  • 总结
    因此专用插件可以很灵活的修改游戏代码逻辑,通过多次回调怪物的扣血函数实现秒怪,通过屏蔽玩家的扣血函数实现无敌

(2)通用工具

1)内存修改器
一、实现与专用插件类似:
注入一个通用功能模块到游戏进程中,根据本地socket接受操作(搜索修改),直接便利内存等方式实现
二、根据平台加载机制躯壳实现
例如在安卓平台下通过/proc/[pid]/maps可读写游戏的内存镜像
2)变速器

  • 定义
    变速器影响游戏的时间质量。游戏通常需要以帧为单位播放画面,在播放画面过程中计算两帧动画播放所需要的时间,游戏需要调用C库函数获系统时间函数以供计算每帧的更新。
  • 做法
    目前外网主流的游戏加速器针对不同的引起修改了不同的Libc.so的相关函数,例如gettimeofday\clock_time,修改法格式则是上面提到的HOOK实现,针对LIbc.so模块的导出函数可利用导入表HOOK的方式

3)按键精灵
安静精灵通常调用系统API来发送特定操作序列,模拟用户案件。这类外挂和系统的关联性极大,因为它的实现主要是通过相应系统的API发送操作模拟全局按键。在安卓上可通过instrumentation接口的sendPointerSync函数实现;也可以通过具备Root权限的驱动程序调用Runtime.getRuntime().exec()执行sendevent等命令
4)模拟器
(略)
5)抓包工具
网络包编辑器,一类实现方式是基于硬件,比如让网卡处于混乱模式,即可拦截数据包;另一类是通过Hook函数,针对send和recv类函数进行拦截,获得网络数据包

2)破解版外挂实现原理(预先静态修改后的独立游戏客户端,可以分为:逆向分析游戏协议、对游戏客户端修改后实现的游戏破解版,可以根据修改后的客户端数据的不同分为逻辑代码和数据资源)

(1)逻辑代码

  • 举例
    1)安卓平台下逻辑代码的修改,根据游戏引擎的不同,修改的内容也不同。常见的Cocos2D游戏,其逻辑代码保存在so文件中,可通过IDA等工具读取和修改ARM\Thumb汇编指令;Unity3D游戏的C#脚本代码则保存在/assets/bin/Data/Managed/Assembly-CSharp.dll中,也可通过ildasm等工具转成IL代码进行修改操作
    2)IOS平台下,代码都在APP的bin文件中,和安卓的so文件类型,只需要了解Thumb指令。同样,还有Lua等代码,根据游戏语言的不同其修改方式也不同。
    3)直接修改汇编指令,可改动的空间较小,一般的实现是修改跳转、参数赋值,比如死亡判断、通关判断、扣血函数修改等。IL、Lua等的修改则较为简单

(2)数据资源

  • 定义:
    数据资源包括除代码外的一切客户端资源,例如图片资源、配置资源、音乐资源等(一般破解版是为了纯粹美化资源,但是更多是靠修改资源文件是实现游戏逻辑修改,这类实现需要更多的逆向积累,例如哪些资源较为敏感可能导致外挂功能)
  • 提及常用的替换资源破解的实现方法:
    1)无脑替换:尝试删除资源文件或者替换成空的,甚至将同类型的资源文件重命名并覆盖。(例如某飞机游戏,删除子弹资源即可实现敌机无子弹的效果,某跑酷游戏将修改后的配置覆盖原始文件即可实现关卡难度降低的功能等)
    2)分析调试法:前期是通过静态法分析或动态调试,确认资源的作用和加密方式

游戏安全02:手游外挂简单分类和实现原理介绍相关推荐

  1. Python制作回合制手游外挂简单教程(中)

    Python制作回合制手游外挂简单教程(中) 接着上篇的博文,今天我们讲如何实现自动组队刷道 引入: 自动组队刷道的流程是先点击刷道按钮.再点击前往按钮.再点击便捷组队······ 这些操作上篇博文已 ...

  2. Python制作回合制手游外挂简单教程(下)

    引入: 接着上篇的博文,今天我们讲如何实现助人为乐 前期准备: 如何获取图片中指定文字的坐标? 我的思路是截取一个小区域,再根据小区域左上角的坐标获取中央坐标 例如: 获取坐上角的x和y坐标,测量x到 ...

  3. python可以制作回合制游戏么_Python制作回合制手游外挂简单教程(上)

    正文 引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这 ...

  4. Android手游外挂入侵----寓攻于守,方能破敌

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 手游外挂入侵 随着各种爆款手游的风靡,目前手机游戏的占比用户已经形成一个巨大的市场,市场上你争我夺,有将PC版本移植到手机中,也有新模式手游的推出. ...

  5. 手游多开检测新招式,阻止手游外挂满天飞

    在2019年手机游戏用户达到6亿多人,市场规模高达1500多亿元,手游市场繁荣,同时也伴随着手游外挂的泛滥. 现如今手游行业里普遍存在的一个现象,部分恶意玩家使用多开,外挂等程序,给游戏厂商造成了不小 ...

  6. 大话西游手游地宫简单亮灯以及打法

    大话西游手游地宫简单实用亮灯及杀法,对于地宫点亮神兽,相信很多土豪们直接花钱就好了,但是没钱怎么办?所以今天教大家一个简单实用的办法. 相信很多大话西游端游玩家对于点亮地宫跟剥鸡蛋壳一样简单,其实大话 ...

  7. android模拟器玩手游,手游模拟器使用说明 手游在电脑上玩的方法介绍

    手游模拟器使用说明 手游在电脑上玩的方法介绍 2018-06-05 16:33:31来源:游戏下载编辑:评论(0) 随着移动互联网的不断发展,人们时间愈加聚焦于移动互联设备工具,移动手机端各种应用逐年 ...

  8. 三国志手游挂机脚本 三国志辅助玩法介绍

    期待已久的手游三国志战略版即将公测,这款手机游戏吸引了大批玩家的关注,下面为大家介绍一下三国志手游辅助脚本及基本玩法介绍 1首先进入游戏,可以看到菜单选择,游戏包含统一中国为目标的统一中国剧本和其他剧 ...

  9. 手游扫码登录教程及其原理(王者荣耀)

    手游扫码登录教程及其原理(eg:王者荣耀) 使用方法 1.搜索类似公众号(峡谷黑科技)获取app下载地址,推荐APP比较稳定,选择王者荣耀. 2.登录方:出现一个二维码,发送给对方. 账号主人:不能直 ...

  10. LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法

    LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法 LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装 ...

最新文章

  1. kafka0.11.0.2安装 笔记
  2. vim graphics
  3. Haskell / GHC中的“ forall”关键字有什么作用?
  4. NetCore+MySql+EF 数据库生成实体模型
  5. 有一台电脑怎么挣钱_大聪明,双十一我想6000元配置一台能畅玩主流游戏的电脑,应该怎么搭配?...
  6. 全排列 ---java
  7. WINDOWS SERVER 2003 之域重命名
  8. Centos/RedHat 7/6/5切换阿里云源并安装EPEL/IUS/REMI仓库
  9. 青瓷游戏上市首日破发,“元宇宙光环”能否拯救年内首支游戏股?
  10. PHP-代码审计-文件包含
  11. 实验七:Xen环境下cirrOS的安装配置
  12. 梦回编程- 由LD_LIBRARY_PATH引发JNI的理解
  13. 超简单利用xposed框架破解钉钉打卡
  14. Xcode + cocoapods + jenkins + fastlane + git + 蒲公英自动化打包 上传
  15. 运维linux脚本实例,Shell脚本使用示例
  16. 如何用C语言打印出ASCII码表
  17. linux学习之使用piranha配置高可用集群
  18. liunx开发板使用交叉网线连接电脑,通过电脑连接外网的方法
  19. 设计模式----策略模式
  20. 自学 9个月 Java 找到了一份 12K 的工作,前辈的方式值得分享给大伙

热门文章

  1. 每日新闻丨英特尔公布未来10年技术路线图;微软下月起终止支持Windows 7
  2. 前端工程中使用iconfont图标
  3. 正交试验软件测试用例设计方法【建议收藏】
  4. java培训之XML学习笔记(1)
  5. 短视频完美开源源码 后台+APP双端源码
  6. 前端50个精美登录注册模板(觉得好用帮我点个赞呗)
  7. 用C语言来写斐波那契数列
  8. C语言实验—— 数值统计
  9. ma系列之-17-磁盘和文件系统1
  10. a5松下驱动器参数设置表_松下a5伺服参数设置详解