nProtect GameGuard 是一款比较著名的防作弊软件,在玩家使用外挂的时候会提示"检测到游戏被破解修改"并强行关闭游戏。
什么是nProtect?
nProtect是设计用于保护个人电脑终端不被病毒和黑客程序感染的新概念的基于网络的反黑客和反病毒的工具。他帮助确保所有输入个人电脑终端的信息在网络上不落入黑客手中。在最终用户在执行电子贸易时,可以通过将nProtect配置在那些提供电子商务、进口贸易,电子贸易的金融机构的网站上,来提高安全等级。
nProtect怎样工作?
nProtect是一种基于服务器端的解决方案并且当那些需要保护的任何网络应用被运行时而自动启动。nProtect被载入内存,所以最终用户不需要安装任何应用程序,只要nProtect启动,就开始拒绝黑客工具和病毒的入侵!
nProtect如何工作?
用户登陆时nProtect自动启动。
浏览器确认和自动安装安全模块到用户的个人电脑。
扫描黑客工具和病毒
通知用户目前的安全状态
如果有黑客工具和病毒尝试删除
在被入侵时端驻留内存来锁定黑客工具直到电脑或者nProtect关闭。
nProtect GameGuard 的主要功能介紹:
实时侦测并封锁修改游戏之黑客程序。
实时侦测并封锁各类型系统病毒。
实时侦测并封锁加速程序。
实时侦测并封锁自动鼠标(连点)程序。
封锁不当外挂程序。
封锁各种意图远程控制玩家个人计算机的动作。
限制意图侧录键盘鼠标动作的恶性程序。
限制可疑间谍程序,加强安全性。
使用此软件的网络游戏还有很多,比如:冒险岛国际服,信长野望online,希望online等等
再来谈谈新版本的冒险岛外挂问题:
目前在服务器上能屏蔽掉的一般都是高速战斗,即两次战斗的数据传输时间间隔少于游戏设定的最少时间(比如说最快的攻击是用小刀砍一下,假设这个时间是2秒,而某ip长时间以1秒传送一次攻击指令(既含有攻击指令的封包),可以强制让此ip断线,但并不能做为封号的证据)高速采集原理也差不多,还有瞬移等。
什么是封包?客户端和服务器之间往来的数据就是封包
有学过计算机的因该都知道计算机网络被OSI参考模型分为7层:
第1层:物理层;传输单位是比特流,既bit
第2层:数据链路层;传输单位是帧,既frame
第3层:网络层;这一层传输的就是包了,既packet
第4层: 传输层;传输单位是段,既segment
第5层:会话层;建立连接并保持连接畅通
第6层:表示层;将信息"表示"为一种格式,可以理解为就是"格式转换"
第7层:应用层。对软件提供接口以使程序能使用网络服务
数据在网络中传输不是一整大段的传输的,而是分成小块传输的,由于比较分散,所以封包。大家可以理解为"搬家的时候把东西打成包好搬运"。
目前的外挂都是内嵌于游戏中,对游戏所接收和发送的封包进行截取,修改,重构建等。
话说回来,nProtect GameGuard的确很厉害,从冒险岛更新它又来到我的硬盘上以后,我的ZoneAlarm防火墙就开始报警了,说它要监视你的进程,并且欲访问网络,唉,没办法,为了玩冒险,只好放行咯。
试图访问internet监视冒险岛进程
切出游戏后,你会发现右下角多了个这东西,翻译过来就是"nProtect 游戏监视程序 版本624"
什么是ZoneAlarm?ZoneAlarm是世界著名的防火墙之一,它的强大只有用过才知道
顺便说一句,世界顶级防火墙是 Look n Stop ,可惜在中文系统上使用时问题比较多,我就跟它88了(广告先止住,免得有人扔砖)
值此,我想大家觉得冒险岛纯净时代再次来临了吧?
不过很可惜,答案是否定的。
很多人说nProtect GameGuard很厉害,但是我要告诉大家:中国人更厉害!!
破解nProtect:
nProtect GameGuard在启动后使用SetWindowsHookEx(Inject DLL)方式进入所有的进程,并且在
OpenProcess()
ReadProcessMemory()
WriteProcessMemory()
PostMessage()
。。。。。。。。。。等等函数的头部加入JMP XXXXXX的代码跳入监测程序进行监测,如发现对游戏进行操作便拦截该操作,所以以上函数均无法正常工作。于是,就避免了外挂问题。
解决方案:
1.运行时将要使用的动态连接库(如:user32.dll kernel32.dll等)复制后改名,使用LoadLibrary和GetProcAddress载入函数。
要使用LoadLibrary和GetProcAddress载入函数,你需要有Visual Studio .NET,或者其中的Visual Basic和Visual C++,当然,你还要会使用他们,而且你还要知道nProtect GameGuard运行时到底调用了哪些动态连接库(这时候大家就八仙过海各显神通吧,想尽一切办法,如果你搞错了的话。。。。。后果自己负责咯。。。。。。。。。)
2.恢复JMP XXXXXX处的代码
需要很高的技术并有很大的危险性,而且不知道会不会再被改。。。。。。一但失败,后果自己负责咯。。。。。。
3.如果nProtect GameGuard非正常关闭(看大家本事了),JMP XXXXXX处的代码不会被恢复而监测程序代码却已经被卸载,这时候如果被Hook程序调用函数。。。。。。后果自己负责咯。。。。。。
反正失败后后果都好不到哪里去,除了电脑爆炸之外,大家就自己去想吧,所以,小心,小心,再小心!
跳过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脱壳,半天左右吧。。。。。。), 脱壳后也不是人人都有能力对程序作适当修改,高级C语言编程能力的要求是跑不掉的。这个还是太难了点。。。。。。。
ok,关于nProtect就先说到这里,相信我们中国人的力量是强大的,外挂会与不久的将来再次与我们见面,其实这只是个时间问题而已。。。。。
听没听说过"两手抓,两手都要硬?"这里引用下,代理商无权直接处理外挂制作者,这个权利只有法律有,代理商也只能通过法律来进行打击,而代理商属于强势群体,要履行"谁主张,谁举证"的原则。问题就在这个证据上,在网络上,对某个人的某个程序的所有进行举正是非常困难的,这个也是为什么外挂木马病毒漫天飞,国家却打击不了的原因。所以代理商只能通过整治游戏的使用人群来达到清理外挂的目的。这就是目前冒险里封号的原因!
既然要说到强势群体,那玩家就是弱势群体,代理商说你用了外挂,请问你能去反查么?抵制外挂,从自己做起。有些人很不服,为什么连变速齿轮都封?我的意见就是"要封就全都封"一个都不留,想想2004年的冒险,我们没有变速齿轮不是一样玩的很开心吗?没有变速,时间长了也就适应了。
这次盛大号称的集成反外挂程序原来就是nProtect这个东西,它就像锁一样:防君子不防小人。再厉害的锁,只要你想搞掉它,就一定有办法。nProtect也一样,其实还是时间问题。