网络安全-如何破掉游戏反外挂系统?

网络安全-如何破掉游戏反外挂系统?

虐人心 发布于 2017-11-11 字数 541 浏览 1444 回复 5

能防就能破,反外挂防得太深兼容性、稳定性不好,防得太浅容易被破防。国内外知名反外挂系统,HProtect、Apex、安博士、Game Guard、np、Xtrap、Kprotect、HackShield等等,如何破防?知道如何破防,就知道如何更好地防御。请大家谈谈。这个问题和@在游戏开发中如何有效防止外挂程序不一样,这篇是如何攻击游戏做外挂和防御的。我的这个问题是攻击游戏保护的,内容不一样。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

想挽留 2017-11-11 5 楼

不管任何的软件必须先脱壳..脱壳后你已经完成了70%...

想挽留 2017-11-11 4 楼

这个问题有些宽泛吧。不同的反外挂系统原理都不一样。如果是检测IP地址的这个好反,做个游动IP地址的功能就行。一般是魔高一尺道高一丈的问题,主动权掌握在游戏开发的手里。

想挽留 2017-11-11 3 楼

介绍“破解反外挂系统”的资料特别少,找了半天也只有找到一个分析nProtect的破解,这可能是仅有一篇介绍破解反外挂的,因为这方面的资料很少,所以下面是我根据这篇文章介绍稍微的整理了一下。

目前比较出名反外挂有nProtect,nProtect是一种基于服务器端的解决方案并且当那些需要保护的任何网络应用被运行时而自动启动。nProtect被载入内存,所以最终用户不需要安装任何应用程序,只要nProtect启动,就开始拒绝黑客工具和病毒的入侵!

nProtect的工作原理:当用户登陆时nProtect自动启动。浏览器确认和自动安装安全模块到用户的个人电脑。扫描黑客工具和病毒,通知用户目前的安全状态,如果有黑客工具和病毒尝试删除 ,在被入侵时端驻留内存来锁定黑客工具直到电脑或者nProtect关闭。

如何破解nProtect:

1.运行时将要使用的动态连接库(如:user32.dll kernel32.dll等)复制后改名,使用LoadLibrary和GetProcAddress载入函数。
要使用LoadLibrary和GetProcAddress载入函数,需要借助Visual Studio .NET,或者Visual Basic和Visual C++,需要知道nProtect GameGuard运行时到底调用了哪些动态连接库。

2.恢复JMP 处的代码
这个就需要比较高的技术并且会有比较大的危险性

3.如果nProtect GameGuard非正常关闭,JMP当中的代码不会被恢复而监测程序代码却已经被卸载,这时候如果被Hook程序调用函数,可能就会有崩溃的可能。

使用自己构建的nProtect服务器来跳过nProtect:
首先要清楚,nProtect通过连接其更新服务器获得当前最新文件内容,然后与本地文件作比较,如发现服务器端的文件与本地的不一致,则从更新服务器重新下载文件更新本地的nProtect文件。如果nProtect更新成功,而新版nProtect又拦截外挂,那么理所当然地nProtect每更新一次外挂就失效一次了。

通过分析游戏客户端用于解析该游戏各程序与其对应远端连接的IP列表文件,找出nProtect更新服务器的地址,并分析出nProtect官方更新服务器上的目录文件结构。
目录文件结构一般为: "更新服务器的名称\GameGuard"
先自己构建一台模拟nProtect更新服务器,服务器上目录文件结构与官方的相同,更新下载文件内容使用旧版nProtect的内容(旧的客户端先不要删除)
将真实nProtect更新服务器的地址,解析到你构建的模拟nProtect更新服务器的IP地址.

例: 127.0.0.1gg.muchina.com
写入到 system32\drivers\etc 的 host 文件中

这个 host 文件为系统TCP/IP协议配置IP解析服务, 没有后缀名,可用记事本或UE32打开编辑。
通常一个网游的顺利运行,是要连接服务器端多个IP的("nProtect服务","连接服务","数据服务","登陆服务","主服务"?)
而这一系列的服务都是由一个游戏主程序的启动运行来完成(如"命运"的"WYDLaucher.exe","奇迹"的"Main.exe","冒险岛"的"MapleStory.exe")
由于host文件已被修改过,其中nProtect更新的连接IP被解析为指向自己模拟的更新服务器,而模拟服务器上的"更新文件"是旧版本的,所以nProtect不但不会被更新为新版,反而会版本倒退。并且往后都不会再更新。

另一个方法,则是直接修改游戏主程序代码内容,就是暴力修改了。
由于nProtect的功能是附在游戏主程序的开头独立执行的,所以,通过对游戏主程序进行破解处理后,将游戏主程序关于nProtect的执行部分的代码打上无效化标记,就很自然地跳过了nProtect了。

补充一下,构建模拟nProtect更新服务器可用本地机器完成(nProtect更新IP:127.0.0.1 有的安全软件会屏蔽掉此个本地自连接IP);用VM虚拟机完成(VM虚拟的多系统可各自设置不同IP);或者另外组一台机器来做也可。

还有,脱壳的方法比较不实际,因为一个当前网游的完整客户端主程序的脱壳工作是很繁重的, 须要多CPU服务器级的技能才能比较有效率的完成(据程序外壳加密方式而定, 双P4 1.8G/1G RAM的系统跑MU97d的main.exe脱壳,所需要的时间可不短)

参考网址:http://www.99tianji.com/simple/?t60314.html

想挽留 2017-11-11 2 楼

游戏反外挂一般分为两种,
一种是客户端的,比如防止多开,基本都是使用互斥器,还有就是使用第三方软件,比如各种protect,这种要过也只能通过绕过客户端的验证,客户端方面对高手来说比较容易
一种是在服务端的,比如移动过速会T人,是根据客户端每次提交过来的位移量来计算的,不过如果在客户端作假的话,也是可以突破的,还有就是扫描进程,查看可疑进程;还有是每次客户端进行重要操作时发送验证码过去,如果客户端返回的结果与服务器计算的结果一致,则认为你没有改动客户端内存,不过这个依然是有办法的。
所谓道高一尺魔高一丈,防不胜防啊。

瑾兮 2017-11-11 1 楼

客户端只向服务器传递 客户端的操作,不传送操作后的结果,所有计算都用服务器计算。谁愿意用挂就用吧。哈哈。