突破NP屏蔽,实现按键模拟!

nProtect GameGuard、XTRAP是两款比较著名的防作弊软件,在玩家使用外挂(无论任何游戏的外挂,就算不是当前游戏的外挂也不可以)的时候

会提示“检测到游戏被破解修改“并强行关闭游戏。

什么是nProtect?

nProtect是设计用于保护个人电脑终端不被病毒和黑客程序感染的新概念的基于网络的反黑客和反病毒的工具。他帮助确保所有输入个人电脑

终端的信息在网络上不落入黑客手中。在最终用户在执行电子贸易时,可以通过将nProtect配置在那些提供电子商务、进口贸易,电子贸易的

金融机构的网站上,来提高安全等级。

nProtect怎样工作?

nProtect是一种基于服务器端的解决方案并且当那些需要保护的任何网络应用被运行时而自动启动。nProtect被载入内存,所以最终用户不需

要安装任何应用程序,只要nProtect启动,就开始拒绝黑客工具和病毒的入侵!

nProtect如何工作?

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

nProtect 的主要功能介绍:

实时侦测并封锁修改游戏之黑客程序。
实时侦测并封锁各类型系统病毒。
实时侦测并封锁加速程序。
实时侦测并封锁自动鼠标(连点)程序。
封锁不当外挂程序。
封锁各种意图远程控制玩家个人计算机的动作。
限制意图侧录键盘鼠标动作的恶性程序。
限制可疑间谍程序,加强安全性。

使用此软件的网络游戏有很多,比如:冒险岛、蒸汽幻想、惊天动地、神话等等。

这篇文章只讲如何突破NP对按键类的封锁。

NP对按键的封锁方式主要有3种:

1、封系统API函数,按键模拟类的API函数有KeyBoard_Event(键盘模拟)、Mouse_Event(鼠标模拟)、SetCursor(模拟鼠标移动)、SendInput()

、SendMessage(发送消息)PutMessage(发送消息)。这种封API函数的方法在NP早期被应用,主要手段是通过钩子函数修改API的CALL地址。但这

种手段很快被人破解,破解方法有2种,1种方法是移植这些API函数的代码(具体移植方法请见相关的专业资料)我曾用这方法,把整个

kernel32.dll系统库文件更名复制,然后调用该库的API,从而绕过NP;第2种方法是使用WINIO.SYS驱动,硬件模拟按键动作(此驱动只支持

8042端口,即只能模拟PS2键盘鼠标动作)。
2、鉴于上面原因,NP不再封系统API,而是封按键模拟相关的内核API。移植系统API来模拟按键就不能实现了,因为移植的系统API最终要调用

内核API。这样留给我们的工作只能是通过驱动硬件来模拟按键动作了。
3、网上流行的硬件模拟是通过对8042端口驱动来实现的,这种操作端口来实现硬件模拟的方法必须要在系统RING0层才能进行。所以,这类操

作都必须通过驱动或中断程序来实现。目前网络上流行的端口操作驱动程序有2种:WINIO.SYS及PortTalk.SYS,WINIO.SYS操作端口效率较高。

它们的主要缺陷是只能模拟PS2的键盘、鼠标,当键盘或鼠标是USB的,或者频繁模拟鼠标时就会出现卡死现象。但这类操作端口的模拟也没长

久,NP也把这类模拟给封了。封的办法很简单,这2个驱动特征太明显了:WINIO把端口操作从RING0层暴露给RING3层,这样的暴露给系统安全

带来隐患,所以有的杀毒软件会对WINIO进行查杀!NP封这种具有典型特征驱动程序易如反掌;PortTalk是用户级驱动程序,可以通过调用

DeviceIoControl函数来操作端口,但正因是用户级驱动,其发出IRP在下传时容易被NP截获屏蔽。这样NP给我们剩下的操作空间就不多了:
1、 改写或移植内核API,这种方法因系统及版本不同实现起来相当困难,极容易造成机器死机。
2、虚拟一个设备,通过该设备驱动程序来操作端 口,最好是将其设备虚拟成键盘和鼠标设备。这种方法可行,因为NP难以实现封设备驱动(封错了机器就死机了)。但这方法也有缺陷,驱动程序需要安装,安装弹出微软的认证签名窗口