浅谈程序常识和如何防御(常见的程序安全问题有哪些如何防范)
更新时间:2022-11-05 16:04:31
访问次数:374
本文首发于行者AI电子游戏自诞生以来,一直遭受着程序的困扰,给游戏公司造成了不可估量的损害本文希望通过介绍程序的相关知识,让对游戏安全感兴趣、有意愿了解游戏安全知识的同学对游戏安全有个基本的认识1. 王者自助发卡网程序基本概念。
1.1 程序基本定义未经官方许可的,可以达到游戏作弊效果的游戏工具使用这种工具,能获得其他诚实玩家无法达到、或者在短期内得到其他诚实玩家必须通过长期运行游戏才能得到的游戏结果满足上述效果王者自助发卡网的工具,称之为“程序”。
1.2 程序的影响程序作弊行为十分恶劣地影响了游戏行业的发展首先,程序的使用损坏了游戏的公平性在程序等游戏中作弊的最直接害处便是影响了游戏的公平性并破坏诚实玩家的利益其次,它会王者自助发卡网破坏游戏玩法,损害游戏质量,从而缩短游戏生命周期。
通过使用程序,程序者可以特别容易获胜或获得更高分数,失去挑战将使游戏不那么可玩此外,程序的使用会影响服务器的服务质量并加速玩家的流失第三,它破坏了游戏王者自助发卡网公司和玩家的经济利益游戏程序造成的犯罪也经常发生游戏公司主要通过收取增值服务或在线游戏玩家付费来赚钱。
程序的使用破坏了网游的可玩趣味性,减少了游戏用户的在线时间和该类产品的生命周期,这极大地损害了出品王者自助发卡网公司的经济利益1.2 程序的分类现如今游戏程序的种类繁多,面对这么多的程序很有必要对程序做一些分类,方便分析和总结程序的技术和特点。
不更改游戏逻辑和数据的”模拟挂”“脚本挂”以按键精灵为代表的一类,它王者自助发卡网本质上不进入游戏内部,只是在外围通过识别游戏图片、文字等方式来模拟点击,达到获益的目的将网络游戏中很繁琐的动作或者重复的无聊的很费玩家时间的流程和任务使用程序帮助玩家完成,达到方便和解放玩家的目的。
例王者自助发卡网如在网络游戏《地下城与勇士》中,角色存在等级制度,等级越高,可以带越好的装备,但是练级并不是一件美妙的事情,想要达到满级更是要花费很长的时间,在游戏满级前就要一直杀怪刷图,可能同一个图要刷几百遍而刷图王者自助发卡网杀怪的过程就要一直按技能键和普攻键,比如普攻是 X 键,一天就要按几千上万遍,及其无聊和枯燥,所以程序制作商开发出这种能够代替人们进行操作的程序,可以利用其按键连点功能,来降低游戏的枯燥和痛苦,按一次王者自助发卡网就可以连续使用 X 键位,达到一直普攻的效果,在游戏人物进游戏后只需按一下 X 键,角色就可以一直攻击,玩家只需要控制角色的移动就可以了,让玩家远离这种无趣的连续点击键盘或者鼠标的操作。
图1. 按键精王者自助发卡网灵使用示意(图片来源网络)修改游戏内存的“内存挂”内存修改类程序可以分为以下三种:(1)第一种方法是利用 virtual X driver(虚拟设备驱动程序)直接查找游戏内存分配地址,这种方法需程序开王者自助发卡网发人员有良好的编程基础和系统的底层驱动知识,是技术较难的一种方法,门槛较高。
(2)第二种方法就是用 ToolHelp API 函数,该函数是用来枚举进程和模块,获取进程和模块的 ID 与信息黑客利用 王者自助发卡网ReadProcess Memory 函数从网络游戏的进程中读取到游戏的内存数据,但是该方法没有修改内存的函数,不能往内存里写数据,所以这种方法需要其他方法的配合,具有一定的弊端。
(3)第三种方法是利王者自助发卡网用游戏进程的对应函数,这种方法比前两种要方便和简单很多,游戏进程的对应函数很容易就能得到,例如利用:ReadProcessMemory 和 WriteProcess-Memory 两个函数对游戏进程进王者自助发卡网行读取和写入,这种方法是当下最流行最受欢迎的方法,该方法能修改市面上大多数的游戏内存。
下面是一些例子:(1)以使命召唤OL卡配件为例游戏的设定为武器可以装配不同的配件,正常情况下,M4A1只能装配2个王者自助发卡网配件使用调试器调试游戏,分析武器的配件逻辑,可以发现:每次装备配件时,都会调用一个游戏函数,定义为AddWeaponAttachment(作者自己的定义,下同),而这个函数的调用参数通过不断的调试分析王者自助发卡网可以猜测为插槽Index以及配件ID,即:AddWeaponAttachment(SlotIndex, AttachmentID)。
额外调用这个函数,即增加一次游戏逻辑的调用,就可以实现M4A1使用多王者自助发卡网个配件(2)以DNF倍攻为例玩家在攻击的时候会有攻击力的叠加同样通过调试分析,找到角色攻击函数,定义为Attack(Target, Power),参数表示攻击的对象以及攻击力,程序可以修改这个Atta王者自助发卡网ck函数,使得Target为当前区域内所有怪物,Power为无穷大,那么Attack的效果即为全屏倍攻。
(3)以CF透视为例游戏在渲染图像的时候会使用Windows的DiretX模块(DX游戏)一般来王者自助发卡网说,在渲染每一帧的时候游戏逻辑会根据由远到近的顺序将当前屏幕内所展示的图像渲染出来,在最终呈现时会根据物体的遮挡关系真实的反映出当前场景,最终觉得当前所看到的画面。
程序可以修改DirectX的渲染逻辑王者自助发卡网,强制将遮挡关系修改,那么原本应该被遮挡的物体会在屏幕上显示出来,形成人物透视(4)以棋牌类游戏看牌挂为例由于游戏逻辑的需要,玩家的底牌会在存放在内存中,而通过内存查看工具不断的变更查看条件,就可以在王者自助发卡网内存中的找到对应的底牌记录,知道别人的底牌之后,玩法就非常随意了。
窜改网络数据的“封包挂”“协议挂”封包类程序是难度较高的一种程序技术,涉及多个技术问题,网络游戏的服务器端和客户端通信是利用 sock王者自助发卡网et ,服务器端申请一个 socket 监听消息,并绑定到一个对应的 IP 地址和端口上,等待游戏客户端的连接,程序制作者利用封包截取工具截取通信数据包,经过多次截取封包,分析数据,得到封包数据对应的王者自助发卡网人物操作或属性,若封包加密则分析其加密算法,网络游戏的前期由于其服务器功能的限制,一般封包都不加密或者采用异或加密很好无效,修改对应的数据,再利用封包截获工具转发给服务器,通过篡改通信数据来实现作弊。王者自助发卡网
WPE是程序玩家常用的封包编辑工具,下图是WPE工具示意图可以抓到并修改游戏进程发出的封包,如果游戏自身存在封包方面的漏洞,就有可能被程序作者发现并利用
图2. WPE示意图其他类程序除了上面的“模拟挂王者自助发卡网”、“内存挂”、“封包挂”之外,市面上还存在一些比较小众的程序(1)显卡驱动级别的程序,直接修改显卡驱动(2)硬件程序定制鼠标芯片、鼠标高级宏、定制键盘或机械手等。
(3)AI程序基于深度学习、强化学习王者自助发卡网的人工智能程序表现形式类似模拟挂2. 防御程序的一些方法2.1 检测程序的常见方法(1)变量检测设置一个全局变量在游戏关键功能函数的外层函数赋值,在功能函数内部检测正常游戏调用肯定是一步一步执行的,必王者自助发卡网然会对变量赋值,但是游戏程序会直接调用功能函数,函数内部发现变量没有被赋值,而检测到程序。
(2)堆栈检测变量检测有一个弱点,那就是必须设置一个全局变量来传递信息,有可能被程序作者利用内存扫描工具来回扫王者自助发卡网描发现变量,在调用前提前赋值规避检测堆栈检测避免了这一点,实现原理是在游戏功能函数内部读取堆栈信息,以此得到调用函数的代码来源,如果发现并非正常代码调用的堆栈,那就是程序程序了。
(3)数据检测不断读取王者自助发卡网关键数据以查看是否被程序篡改,不过直接查看太过容易被程序作者发现,一般混在游戏正常读取数据的代码中间接查看是否异常(4)CRC检测CRC检测主要是保护游戏代码不被程序程序篡改,游戏中有一些关键逻辑代码王者自助发卡网,比如如果血量为0的话会判断人物死亡,程序课程可以恶意篡改判断逻辑,让程序无论怎样都不会执行死亡代码,从而实现无敌效果。
CRC检测的原理是,不断的读取关键代码的值,以此查看代码是否被篡改CRC之类算法王者自助发卡网对自身的完整效验勾挂函数的完整效验,一些重要代码段另外单独校验,校验相关代码段VMP,必要的话返回服务器中验证(5)进程检测。
获取系统进程列表,检测是否有常见程序的进程名,如果检测到存在程序进程直接强王者自助发卡网制下线(6)行为检测现在大力发展的新兴检测 如某企鹅的DXF就有此保护机制 效果甚好 甚至连图色应用都无法在其幸存 搞得 一些人直接上机械臂,与上面几种方式不同:此种检测主要是检测用户的行为,主要是利王者自助发卡网用深度学习人工智能大数据对玩家的行为数据进行分析。
比如一局游戏中一位玩家爆头和击杀率都特别的高,鼠标移动的轨迹几乎为直线,那么就可以把这些数据异常的玩家抽调出来转入人工检测,或者极为异常的直接封号处理王者自助发卡网2.2 防篡改思路(1)游戏登陆相关封包处理游戏的登录封包尽量复杂化,不同的封包类型中部分数据采用多重加密是必要的,多个端口乱序通讯,这些登陆分包是一次性的不用太担心算法效率问题,而此操作却可以大大增王者自助发卡网加逆向难度。
(2)游戏反调试保护主流思想是驱动层进行调试器进程检测、标志位检测,HOOK重要函数等方法以及给游戏执行文件加猛壳利用壳的功能实现反调(3)服务器数据校验收到客户端发来的消息后,对消息的合王者自助发卡网法性进行验算比如上面提到的秒通关封包漏洞。
服务器可以针对战斗数据做校验来进一步判断是否真的通关成功(4)快速小规模更新游戏更新内容是代码混淆,基址变更(5)协议非对称加密交换密钥,对称加密传输内容,保王者自助发卡网护好服务端私钥,防止中间人攻击流式加密,同样包发两次内容不一样。
(6)不定期弹出反程序答题,答正确奖励经验,错误就掉线(7)客户端加密加壳防止调试和注入,程序签名防止篡改二进制(8)重要代码放虚拟机或王者自助发卡网者脚本里运行(脚本字节码需需改),一般黑客主要分析反汇编,复杂逻辑多套几层黑客就晕了。
(9)关键数据不落内存,一律使用getxx,setxx之类的接口,后面将真实数据经过变换以后才落内存(10)守护进王者自助发卡网程动态跟踪监控情况(11)决定性逻辑永远放在服务端(12)发现某黑客/程序工具利用某漏洞无效了游戏,先看影响大不大,再看他挣不挣钱,影响一般又不挣钱的话可以先养着他,等他挣钱了用户多了,大型活动之前,王者自助发卡网一条指令就把它封了,用户退款都可以弄得他爬不起来。
(13)必须要放在客户端计算的逻辑将输入和结果hash同步给其他客户端验算,不对就踢掉(14)当检测到客户端触碰到某规则不要急着踢掉它,而是有概率踢掉王者自助发卡网,还要随机几秒踢掉,这样黑客发现一会这里断一会那里断,就蒙圈了。
3. 总结现如今游戏程序越来越多,网络开发商和玩家饱受困扰,任何一款相对火爆的游戏,都会成为程序制作者重点关注的对象,从而造成程序泛滥,王者自助发卡网玩家流失,致使游戏缩短运营时间网络游戏安全问题日益严重,由于本人的能力和时间有限,本文提出的程序检测机制和防篡改思路还有很多需要修改和完善的地方,因此希望有更多的人能够更加深入研究,早日净化当今的网络王者自助发卡网游戏环境,能够让后来的研究者少走弯路。
我们是行者AI,我们在“AI+游戏”中不断前行。前往公众号 【行者AI】,和我们一起探讨技术问题吧!
网友评论