突破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難以實現封設備驅動(封錯了機器就死機了)。但這方法也有缺陷,驅動程序需要安裝,安裝彈出微軟的認證簽名窗口