技术标签: 虚拟机 解密 hook 开发工具 服务器 游戏 游戏相关
所谓知己知彼方能百战不殆,要想减少或避免外挂对游戏的侵害,必须从根本上知晓外挂的原理,及其常用的技术手段,从而在技术手段上对其进行封堵。
一、外挂的分类
外挂一般的分为2类,脱机式 和 内挂式。
脱机式外挂的定义:完全脱离官方发布的客户端程序,可以与游戏服务器自由的进行通讯的外挂程序,这类外挂的实现是2类外挂里最困难的,主要难点在于外挂制作者需要对游戏的通讯协议进行充分的分析,包括解决封包的加密解密问题,使得封包合法化,这样游戏服务器才能接受并处理。
内挂式外挂的定义:内挂需要以官方发布的客户端程序为载体,依靠客户端程序来完成与游戏服务器的通讯,主要通过反汇编手段分析并修改客户端代码后实现功能,一般通过直接调用游戏客户端的发包函数进行发包,或者调用游戏客户端的封包加密解密函数自行处理发包收包。
二、制作外挂常用的技术手段
制作外挂一般使用的分析工具:
动态分析 OllyDbg(OllyICE)
静态分析 IDA Pro
制作外挂一般使用的开发工具:
VisualStdio系列(VC++,VB)
Borland系列(Delphi,BCB,BC++)
中国人自己的开发工具(易语言)(编者注:此开发工具优势在于控件种类上,有专门的用于外挂制作的控件)
制作外挂的技术要点:
鼠标键盘模拟技术:这类技术在RING3层可通过调用WIN32 API实现,在RING0层可通过驱动模拟鼠标键盘输入来实现。按键精灵就采用在RING0层通过驱动来模拟鼠标键盘,比较底层。
Hook技术:包括API HOOK 、普通的对游戏代码进行HOOK等。这类技术有个特点,对目标进程的代码会进行修改。
脚本技术:扩充外挂功能的技术之一,能让外挂使用者编写脚本来扩充外挂功能。
三、反外挂中常用的技术手段
反外挂一般使用的分析工具:
动态分析 OllyDbg(OllyICE)
静态分析 IDA Pro
制作反外挂一般使用的开发工具:
依据游戏客户端采用的开发工具来决定。
制作反外挂的技术要点:
代码校验:包括磁盘代码及内存代码校验,防止代码被非法更改。
虚拟机保护:虚拟机(VM )其实就是Virtual Machine的缩写,这里说的VM并不是像VMWare那样的虚拟机,而是将一系列的指令解释成 bytecode(字节码)放在一个解释引擎中执行,能有效的干扰非法调试者对保护的代码进行分析。是反外挂技术中的重中之重。
驱动保护:采用底层钩子技术,一般采用SSDT HOOK来对游戏进程进行保护。但这种技术有一个致命的缺陷,就是兼容性问题。
反调试:对调试过程产生干扰,阻止非法调试者进行正常的调试。反调试代码加多后会导致兼容性稳定性出现问题。
四、一般保护的思路及步骤
防止脱机式外挂:
合理的设计封包通讯协议及对封包加密解密算法进行虚拟机保护能有效的防止脱机外挂,反脱机外挂的难度比较低。而且技术要求也不高。
防止内挂式外挂:
反该类外挂主要从代码校验上着手,并配合虚拟机保护,必要时候加上简单的驱动。简单的可以采用如下步骤处理:
(1) 将封包加密解密独立成一个动态连接库(DLL),供游戏主程序调用进行封包加解密。
(2) 更换封包加密解密方式,防止破解者采用替换旧客户端的方式进入游戏。
(3) 反外挂功能在独立出来的动态连接库里实现,在独立出来的动态连接库中加入对主程序代码段校验。建立一个新的反外挂线程来校验代码段,加入敌意进程或模块的特征检测,对关键的API进行检测。检测到非法可以对服务器进行报告,并在客户端主动切断与游戏服务器的连接。
(4) 在加密解密函数里加入对反外挂线程的检测,检测反外挂线程是否正常运行,如果检测到非法情况,同样对服务器进行报告并主动切断与游戏服务器的连接。
(5) 对独立出来的DLL进行虚拟机保护(封包加解密及反外挂线程代码)。
(6) 加入一些反调试技术。
(7) 根据实际情况采用驱动技术,对游戏进行保护。
五、对反外挂工作的建议
反外挂工作具有长期性,复杂性等特性,故建立专门进行此类工作的软件安全小组是必须的,及时的收集外挂后分析外挂的所使用的技术和破解反外挂系统的方式,写出相应的检测及防护代码,提交后进行游戏更新。通过不断的完善反外挂系统,我有理由坚信,外挂会在这样的保护措施下销声匿迹。
多行缩进调整:多行向右:tab多行向左:shift+tab多行注释:Ctrl+/_vscode shit tab
都说大厂面试必问源码,可很多人看完MMKV 源码、Handler 源码、Binder 源码、OkHttp 源码等源码记不住,是脑子有问题吗?当然不是!是因为你没有掌握学习源码的技巧。我的朋友子路,很多人都叫他路神,称他为“国内源码讲解最好的第一人”。子路说他以前学习MMKV 、ARouter 源码,只能去翻书,去报个线下培训班,或者向其他公司的大牛请教,一个疑问有时候会卡好几天。但现在不一样,各种免费的资料和视频,学习成本太低了!但是网上的内容质量参差不齐,都是东拼西凑的,辛辛苦苦学半天,面试还是挂了
明远智睿MY-SAMA5 Linux-3.18 测试手册1 测试前的准备1)请按照《Linux快速启动手册》中的“Linux快速启动” -> “连接设备”进行连接。2)请按照《Linux快速启动手册》中的“Linux快速启动” -> “启动设备”进行启动。 2 测试项目2.1 网口测试MY-SAMA5-EK200支持双网口(1个百兆网口,一个千兆网口)。...
在开机之后,发现网卡没有启动起来,进行了如下操作1、ifup ens33Bringing up interface ens33: Error: Connection activation failed: No suitable device found for this connection.2、接着想重启网络服务[root@client01 network-scripts]# systemc...
Android中的MimeType是设置在Intent-Filter中的的android:mimeType属性 . 它的作用是告诉Android系统本Activity可以处理的文件的类型。如设置为 “text/plain”表示可以处理“.txt”文件。
最近项目中提一个需求,在原有的文字下拉菜单中添加Icon,接到需求的时候觉得很简单,因为QMenu本身就可以设置Icon,只要添加上不就行了。但是,后来发现,这样设置的Icon很小,而我们的图片被放缩到那么小,根本看不清楚~网上查了下,说是QMenu默认的icon最大是16px*16px,What???那我想设置20*20的怎么办?查资料,发现两种解决办法~先说第一种,定义一个新的_qmenu icon
正文Android行业主要问题是初级Android太多了,会写xml和Activity的程序员太多了,初中级程序员面临很大的竞争,现状也就偏于高级开发者。越来越多的初中级Android程序员找不到满意的工作,甚至根本找不到工作!所以很多人觉得Android要凉了,甚至不惜转行,从头学其它技术。现在的Android招聘要求,已经不是多年之前的要求了。为什么感觉不好找工作这个也是很多人的疑问,说投了很多简历,都没有回应,总感觉今年工作特别难找。这个在这里解释下原因:不知道我的读者们关注经济不,我老板
SELECT * FROM ( SELECT @r AS id, (SELECT @r := father FROM user_relainfo where id = @r) AS father FROM (SELECT @r := 455) vars, user_relainfo h WHERE @r <> 409) T1 SELECT..._mysql initialisation
设置后台Job,更多功能请看函数组:BTCH DATA: jobcount LIKE tbtcjob-jobcount.DATA: abort TYPE c, finish TYPE c, prelim TYPE c, ready TYPE c, run TYPE c,
如何下载安装Linux Kali1.下载kali镜像文件百度网盘链接:https://pan.baidu.com/s/1yufMZE8gen4jJviUbRPXXQ提取码:ofycKali版本:kali-linux-2019.3-amd64.iso官网下载地址http://cdimage.kali.org/2.在VM下安装kali按图片顺序操作..._kaliao one
什么是Kotlin?Kotlin,如前面所说,它是JetBrains开发的基于JVM的语言。JetBrains因为创造了一个强大的Java开发IDE被大家所熟知。Android Studio,官方的Android IDE,就是基于Intellij,作为一个该平台的插件。Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于Android开发者,有两个有趣的特点:对Java开发者来说,Kotlin是非常直觉化的,并且非常容易学习。语言的大部分内容都是与我们知道的非常_字节跳动郑志铨
1.什么是wav格式 WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源。 通常使用三个参数来表示声音,量化位数,取样频率和采样点振幅。量化位数分为8位,16位,24位三种,声道有单声道和立体声之分,单声道振幅数据为n*1矩阵点,立体声为..._naudio 合并语音文件