如何破掉游戏反外挂系统?


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

驱动 网络安全 讨论 逆向工程 破解

猫井喵太郎 12 years, 2 months ago

介绍“破解反外挂系统”的资料特别少,找了半天也只有找到一个分析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

哎呦不错这个叼 answered 12 years, 2 months ago

Your Answer