欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

阻斷對(duì)游戲進(jìn)程非法訪(fǎng)問(wèn)以及操作游戲進(jìn)程的方法

文檔序號(hào):6441790閱讀:278來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):阻斷對(duì)游戲進(jìn)程非法訪(fǎng)問(wèn)以及操作游戲進(jìn)程的方法
技術(shù)領(lǐng)域
本發(fā)明一般地涉及一種確保在線(xiàn)游戲安全的方法,并且尤其涉及一種實(shí)時(shí)地阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和操作以確保在線(xiàn)游戲安全的方法,所述方法能夠使用應(yīng)用程序接口掛鉤(hooking)技術(shù)阻止黑客工具非法訪(fǎng)問(wèn)在線(xiàn)游戲。
背景技術(shù)
隨著超高速互聯(lián)網(wǎng)的普及,在線(xiàn)游戲用戶(hù)的數(shù)量迅速增長(zhǎng)并且開(kāi)發(fā)了大量在線(xiàn)游戲,但是對(duì)游戲安全性的理解和估計(jì)卻遠(yuǎn)遠(yuǎn)不足。對(duì)游戲的黑客攻擊簡(jiǎn)稱(chēng)為“游戲黑客”。典型的黑客攻擊指在特定計(jì)算機(jī)上非法獲取管理權(quán)限,或者訪(fǎng)問(wèn)計(jì)算機(jī)后對(duì)該計(jì)算機(jī)內(nèi)的數(shù)據(jù)非法操作。相反地,游戲黑客指的是對(duì)特定游戲客戶(hù)端的文件或者存儲(chǔ)區(qū)進(jìn)行操作的程序。
游戲黑客通過(guò)操作游戲進(jìn)程的存儲(chǔ)區(qū)而改變特定數(shù)據(jù),例如能力級(jí)別和體力。在套裝游戲中使用游戲黑客并不會(huì)影響其它游戲使用者,但是在在線(xiàn)游戲中使用游戲黑客則會(huì)引起問(wèn)題,例如破壞游戲使用者之間的平衡以及在游戲服務(wù)器上強(qiáng)加過(guò)大負(fù)荷。就是說(shuō),如果某些游戲使用者玩游戲時(shí)通過(guò)不正當(dāng)方法獲利,則游戲使用者之間的平衡被破壞。在嚴(yán)重情況下,整個(gè)在線(xiàn)游戲的平衡被擾亂,并且游戲服務(wù)器被強(qiáng)加過(guò)大負(fù)荷。
因此,必須提高安全級(jí)別以防止游戲使用者在在線(xiàn)游戲中使用游戲黑客。然而,根據(jù)游戲使用者渴望破解這一事實(shí),在線(xiàn)游戲安全性不同于其它安全性,很難保護(hù)在線(xiàn)游戲不受游戲黑客攻擊。也就是說(shuō),由于游戲使用者渴望去除在線(xiàn)游戲保護(hù)并且安裝了游戲黑客,必須針對(duì)這些游戲使用者而確保在線(xiàn)游戲的安全性。同樣的情況還出現(xiàn)在針對(duì)由于想要傳播病毒而關(guān)閉殺毒程序或者卸載殺毒程序的用戶(hù)而確保安全性。
在此情況下,理想的是游戲開(kāi)發(fā)公司在自身的游戲客戶(hù)端中包含安全代碼。然而,由游戲開(kāi)發(fā)公司自身注意安全性需要大量的時(shí)間和花費(fèi),并且由于對(duì)付隨時(shí)出現(xiàn)的新黑客而引起的大量黑客攻擊以至很難升級(jí)游戲客戶(hù)端以。而且,由于某些破解者在使用逆向工程(reverse engineering)技術(shù)分析游戲客戶(hù)端之后可以執(zhí)行操作以跳過(guò)游戲客戶(hù)端中包含的安全代碼,包含在游戲客戶(hù)端中的安全代碼可能失效。
因此,產(chǎn)生了對(duì)于保護(hù)游戲不受各種強(qiáng)大的游戲黑客攻擊的安全解決方案的需求。
傳統(tǒng)的在線(xiàn)游戲安全解決方案包括由本申請(qǐng)人開(kāi)發(fā)的FindHack和AhnLab公司開(kāi)發(fā)的用于游戲服務(wù)(MFGS)的MyFirewall。這兩種產(chǎn)品均采取使用殺毒引擎簡(jiǎn)單注冊(cè)黑客工具模式的方案,周期性的檢測(cè)進(jìn)程,并且當(dāng)進(jìn)程模式與所注冊(cè)的黑客工具模式一致時(shí)強(qiáng)行終止相應(yīng)進(jìn)程。
然而,該游戲安全策略是有問(wèn)題的,因?yàn)楸仨毑粩嘧?cè)大量新的黑客工具模式,并且如果已有黑客工具被編譯或者已有黑客工具的可執(zhí)行文件被壓縮而改變了程序模式,已有黑客工具可能不再能夠被檢測(cè)。
而且,由于使用者想要中止在線(xiàn)游戲安全功能并且使用黑客工具,使用者通過(guò)對(duì)存儲(chǔ)區(qū)黑客攻擊而強(qiáng)行終止在線(xiàn)游戲安全程序、臨時(shí)中止安全功能或者使安全程序自身失效,從而游戲安全程序并不能令人滿(mǎn)意地運(yùn)行。

發(fā)明內(nèi)容
因此,本發(fā)明致力于針對(duì)上述現(xiàn)有技術(shù)中產(chǎn)生的問(wèn)題,并且本發(fā)明的一個(gè)目標(biāo)是提供一種阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和操作以確保在線(xiàn)游戲安全的方法,該方法能夠使用API掛鉤程序阻止黑客工具非法訪(fǎng)問(wèn)游戲進(jìn)程以及非法操作安全程序。
為了完成上述目標(biāo),本發(fā)明提供了一種在計(jì)算機(jī)系統(tǒng)中阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和操作的方法,包括步驟安裝應(yīng)用程序接口(API)掛鉤程序以選擇性地允許和阻斷計(jì)算機(jī)系統(tǒng)中的API進(jìn)程程序的執(zhí)行,通過(guò)計(jì)算機(jī)系統(tǒng)中正在運(yùn)行的進(jìn)程為所使用的API掛上掛鉤,在被鉤住的API上執(zhí)行API掛鉤程序并且確定是否允許該API進(jìn)程程序的執(zhí)行,以及如果所述API進(jìn)程程序的執(zhí)行被允許則運(yùn)行該API進(jìn)程程序。
優(yōu)選地,所述方法可以進(jìn)一步包括把API掛鉤程序插入到計(jì)算機(jī)系統(tǒng)中正在運(yùn)行進(jìn)程的存儲(chǔ)區(qū)中的步驟。
優(yōu)選地,插入API掛鉤程序的步驟可以包括步驟啟動(dòng)API掛鉤程序?qū)⒁度氲哪繕?biāo)進(jìn)程,使用完全權(quán)限并且使用所述目標(biāo)進(jìn)程的進(jìn)程ID(PID),并且存儲(chǔ)目標(biāo)進(jìn)程的句柄,使用所述目標(biāo)進(jìn)程的句柄分配可讀/可寫(xiě)/可執(zhí)行的存儲(chǔ)區(qū)給該目標(biāo)進(jìn)程,在所分配的存儲(chǔ)器中記錄API掛鉤程序,以及生成API掛鉤程序的起始地址的線(xiàn)程。
優(yōu)選地,運(yùn)行API掛鉤程序的步驟可以包括步驟檢測(cè)使用被鉤住的API的當(dāng)前進(jìn)程,檢測(cè)當(dāng)前進(jìn)程的API使用權(quán)限、API的目標(biāo)進(jìn)程以及API任務(wù)的類(lèi)型,以及根據(jù)當(dāng)前進(jìn)程的API使用權(quán)限、API的目標(biāo)進(jìn)程和API任務(wù)的類(lèi)型而確定該API進(jìn)程程序是否被允許。


本發(fā)明的上述和其它的目標(biāo)、特性和優(yōu)點(diǎn)可以通過(guò)下面的結(jié)合附圖的詳細(xì)描述而更加清楚地理解,其中圖1是顯示根據(jù)本發(fā)明一個(gè)實(shí)施例的Windows操作系統(tǒng)環(huán)境中API掛鉤引擎應(yīng)用的示例的結(jié)構(gòu)圖;圖2是顯示根據(jù)本發(fā)明一個(gè)實(shí)施例的阻斷對(duì)進(jìn)程的非法訪(fǎng)問(wèn)和操作的過(guò)程的流程圖;
圖3是顯示圖2中API掛鉤引擎插入子程序的詳細(xì)流程圖;圖4是顯示在其中插入API掛鉤引擎的進(jìn)程存儲(chǔ)區(qū)的視圖;圖5是顯示圖2中API掛鉤程序執(zhí)行子程序的詳細(xì)流程圖;以及圖6是顯示進(jìn)程數(shù)據(jù)庫(kù)和句柄表的視圖。
具體實(shí)施例方式
下面參考附圖詳細(xì)描述了阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和對(duì)游戲進(jìn)程的非法操作的過(guò)程。
在對(duì)本發(fā)明實(shí)施例進(jìn)行描述之前,簡(jiǎn)要描述本說(shuō)明書(shū)和權(quán)利要求書(shū)中使用的術(shù)語(yǔ)。
黑客操作特定游戲客戶(hù)端的文件或存儲(chǔ)區(qū)的程序。
補(bǔ)丁改變程序特定部分的內(nèi)容的操作。術(shù)語(yǔ)黑客有時(shí)指改變游戲客戶(hù)端的特定存儲(chǔ)區(qū)的操作。在這種情況下,黑客可以通過(guò)操作游戲客戶(hù)端的代碼或者數(shù)據(jù)如其所需的改變游戲客戶(hù)端的執(zhí)行。
逆向工程通過(guò)操作可執(zhí)行文件(例如.exe文件或者.dll文件)改變程序流的操作。通過(guò)使用逆向工程,可執(zhí)行文件的機(jī)器語(yǔ)言代碼可以改變?yōu)閰R編代碼進(jìn)行分析、修改,并且然后組成修改后的可執(zhí)行文件。
自動(dòng)鼠標(biāo)(Automouse)鼠標(biāo)操作被自動(dòng)發(fā)送給游戲,從而游戲可以脫離使用者自動(dòng)進(jìn)行。
宏自動(dòng)鼠標(biāo)的改進(jìn)形式。如同編程一樣,宏允許建立所需的鍵盤(pán)或者鼠標(biāo)輸入,并且該輸入被自動(dòng)發(fā)送到游戲并重復(fù)執(zhí)行。
游戲黑客(GameHack)典型的游戲黑客通過(guò)操作游戲進(jìn)程的存儲(chǔ)區(qū)而改變特定數(shù)據(jù),例如能力級(jí)別或者體力。游戲黑客主要是操作游戲進(jìn)程的存儲(chǔ)區(qū),自動(dòng)鼠標(biāo)主要是生成鼠標(biāo)或者鍵盤(pán)事件并且發(fā)送所述鼠標(biāo)或者鍵盤(pán)事件到游戲進(jìn)程。
與所述游戲黑客相關(guān)的存儲(chǔ)器訪(fǎng)問(wèn)API包括ReadProcessMemory、WriteProcessMemory以及OpenProcess。與所述自動(dòng)鼠標(biāo)相關(guān)的事件生成API包括SendInput、SendMessage、PostMessage、Keybd event以及mouse_event。也就是說(shuō),黑客工具使用例如OpenProcess、ReadProcessMemory、WriteProcessMemory、SendInput、SendMessage、PostMessage、Keybd_event以及mouse_event等API訪(fǎng)問(wèn)游戲進(jìn)程,并且執(zhí)行游戲黑客和自動(dòng)鼠標(biāo)功能。
本發(fā)明在所述黑客工具為執(zhí)行游戲黑客或者自動(dòng)鼠標(biāo)而訪(fǎng)問(wèn)游戲進(jìn)程時(shí)鉤住使用的API,并且確定API的目標(biāo)是否為游戲以及所述訪(fǎng)問(wèn)是否非法,由此運(yùn)行對(duì)應(yīng)的API程序或者阻斷所述API程序的執(zhí)行。在這種情況下,API掛鉤指的是中途截取程序執(zhí)行的命令并且檢測(cè)或者操作所述命令或者參數(shù)的技術(shù)。
為了實(shí)現(xiàn)該目標(biāo),發(fā)明者開(kāi)發(fā)了關(guān)于各個(gè)操作系統(tǒng)的API掛鉤引擎,所述API掛鉤引擎被使用以通過(guò)分析被掛上掛鉤的API的變量或參數(shù)而確定對(duì)應(yīng)的API是否為對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)。
圖1是顯示根據(jù)本發(fā)明一個(gè)實(shí)施例的Windows操作系統(tǒng)環(huán)境中API掛鉤引擎應(yīng)用的示例的結(jié)構(gòu)圖。
當(dāng)用戶(hù)運(yùn)行Windows并執(zhí)行應(yīng)用程序時(shí),運(yùn)行所述應(yīng)用程序的進(jìn)程在Windows系統(tǒng)100中啟動(dòng)。
在本發(fā)明中,正在運(yùn)行的進(jìn)程分為允許進(jìn)程110和一般進(jìn)程120。允許進(jìn)程110是指如果其中API被阻斷則Windows系統(tǒng)100可能會(huì)停止或者不穩(wěn)定的進(jìn)程。允許進(jìn)程110包括系統(tǒng)進(jìn)程,游戲進(jìn)程以及安全進(jìn)程。一般進(jìn)程120包括除了允許進(jìn)程110外的所有進(jìn)程,并且指的是其中插入了API掛鉤引擎130并被API掛鉤引擎130檢查的進(jìn)程。每個(gè)API掛鉤引擎130包括分別映射到將被鉤住的API命令的API掛鉤程序。當(dāng)游戲黑客進(jìn)程啟動(dòng)后,由于所述游戲黑客進(jìn)程被劃分為一般進(jìn)程,API掛鉤引擎130被插入到所述游戲黑客進(jìn)程,并且所述游戲黑客進(jìn)程由API掛鉤引擎130進(jìn)行檢查。
當(dāng)允許進(jìn)程110執(zhí)行API命令時(shí),Windows系統(tǒng)100調(diào)用包含對(duì)應(yīng)于所述API命令的API進(jìn)程程序的系統(tǒng)動(dòng)態(tài)鏈接庫(kù)(DLL)140,并且發(fā)送所述API進(jìn)程程序執(zhí)行的結(jié)果值到允許進(jìn)程110。同時(shí),當(dāng)一般進(jìn)程110執(zhí)行API命令時(shí),API掛鉤程序130啟動(dòng)。API掛鉤程序130確定所述API命令的目標(biāo)進(jìn)程和訪(fǎng)問(wèn)權(quán)限,并且選擇性的允許和阻斷所述API命令的執(zhí)行。Windows系統(tǒng)100調(diào)用對(duì)應(yīng)于被API掛鉤程序130允許的所述API命令的系統(tǒng)DLL140,并且發(fā)送從系統(tǒng)DLL 140輸入的執(zhí)行結(jié)果值到一般進(jìn)程120。
圖2是顯示根據(jù)本發(fā)明一個(gè)實(shí)施例的阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和操作的過(guò)程的流程圖。
Windows系統(tǒng)在步驟S210接收API掛鉤引擎,并且在步驟S220將所述API掛鉤引擎插入到正在運(yùn)行的除了允許進(jìn)程之外的一般進(jìn)程。當(dāng)一般進(jìn)程使用API時(shí),在步驟S230處Windows系統(tǒng)在使用的API上執(zhí)行API掛鉤并且執(zhí)行對(duì)應(yīng)的API掛鉤程序。如果所述API掛鉤程序執(zhí)行的結(jié)果使得在步驟S240處允許運(yùn)行對(duì)應(yīng)的API進(jìn)程,則所述API進(jìn)程程序在步驟S250處執(zhí)行,并且在步驟S260處所述API進(jìn)程的結(jié)果被發(fā)送到一般進(jìn)程。如果所述API掛鉤程序執(zhí)行的結(jié)果使得在步驟S240處不允許運(yùn)行對(duì)應(yīng)的API進(jìn)程,則在步驟S260處所述API進(jìn)程的結(jié)果被發(fā)送到一般進(jìn)程而不執(zhí)行所述API進(jìn)程程序。
在此情況下,如上所述,被API引擎鉤住的API包括游戲黑客中使用的ReadProcessMemory和WriteProcessMemory,以及自動(dòng)鼠標(biāo)中使用的keybd_event和mouse_event。
下面更詳細(xì)地描述圖2中的步驟。
在步驟S210處接收的API掛鉤引擎具有對(duì)應(yīng)于在其上執(zhí)行API掛鉤的API的API掛鉤程序。例如,假定映射到OpenProcess API的API掛鉤引擎是HookedOpenProcess,那么當(dāng)進(jìn)程使用OpenProcess API時(shí),HookedOpenProcess在對(duì)應(yīng)的OpenProcess API被調(diào)用之前先被調(diào)用。HookedOpenProcess分析變量和參數(shù)信息,并且確定是否運(yùn)行或者阻斷對(duì)應(yīng)的API進(jìn)程程序。執(zhí)行API掛鉤程序的步驟將在步驟S230進(jìn)行描述。
在步驟S220,API掛鉤引擎被插入到其中必須插入該API掛鉤引擎的目標(biāo)進(jìn)程中。圖3是顯示API掛鉤引擎插入子程序的詳細(xì)流程圖。在Windows操作系統(tǒng)中,由于每個(gè)進(jìn)程僅可以在分配給該進(jìn)程的存儲(chǔ)區(qū)域中執(zhí)行代碼,需要進(jìn)行將API掛鉤引擎插入目標(biāo)進(jìn)程的工作。在此情況下,目標(biāo)進(jìn)程包括不具有API掛鉤引擎而運(yùn)行的一般進(jìn)程。
在Windows 95/98/me系列系統(tǒng)中,由于所有進(jìn)程可以訪(fǎng)問(wèn)被所有這些進(jìn)程共享的存儲(chǔ)區(qū),如果插入API掛鉤引擎到存儲(chǔ)區(qū),所述API掛鉤引擎僅僅插入到單個(gè)目標(biāo)進(jìn)程的存儲(chǔ)區(qū)域中。在Windows NT/2000/XP系列系統(tǒng)中,由于A(yíng)PI掛鉤引擎必須插入到所有目標(biāo)進(jìn)程中,需要獲取當(dāng)前運(yùn)行的所有目標(biāo)進(jìn)程的PID并且API掛鉤引擎被插入到所有這些目標(biāo)進(jìn)程中。
插入API掛鉤引擎到目標(biāo)進(jìn)程中的步驟結(jié)合圖3進(jìn)行描述。目標(biāo)進(jìn)程在步驟S221處啟動(dòng)。在此情況下,執(zhí)行了OpenProcess命令,所述目標(biāo)進(jìn)程通過(guò)使用該目標(biāo)進(jìn)程的PID而使用完全權(quán)限啟動(dòng),并且此時(shí)獲取的進(jìn)程句柄(hProcess)被存儲(chǔ)。
在步驟S222,使用在步驟S221處獲取的進(jìn)程句柄(hProcess)給目標(biāo)進(jìn)程分配可讀/可寫(xiě)/可執(zhí)行的存儲(chǔ)區(qū)。所分配的存儲(chǔ)區(qū)的地址被存儲(chǔ)。
在步驟S223,將API掛鉤引擎記錄到在步驟S222中分配的存儲(chǔ)區(qū)上。在此情況下,使用了WriteProcessMemory命令。API掛鉤引擎使用在步驟S221中獲取的進(jìn)程句柄(hProcess)而記錄到目標(biāo)進(jìn)程的分配存儲(chǔ)區(qū)上,并且步驟S222中獲取的存儲(chǔ)區(qū)地址和API掛鉤引擎的地址和大小作為參數(shù)。
執(zhí)行API掛鉤的線(xiàn)程在步驟S224被生成并執(zhí)行。在此情況下,使用了CreateRemoteThread命令。記錄在進(jìn)程句柄(hProcess)中的API掛鉤引擎的起始地址的線(xiàn)程被生成并執(zhí)行,并且所生成的線(xiàn)程句柄(hThread)和線(xiàn)程ID被存儲(chǔ)。執(zhí)行所述API掛鉤的代碼存在于步驟S222中分配的存儲(chǔ)區(qū)域的最前面部分,從而所述API掛鉤被所生成的線(xiàn)程執(zhí)行。此后,目標(biāo)進(jìn)程中的被鉤住的API通過(guò)API掛鉤程序。
圖4是顯示目標(biāo)進(jìn)程的存儲(chǔ)區(qū)結(jié)構(gòu)的視圖。在圖4中,(a)是步驟S222中分配的存儲(chǔ)區(qū)域,(b)和(c)是API掛鉤引擎,其中(b)是API掛鉤執(zhí)行代碼并且(c)是API掛鉤程序。也就是說(shuō),API掛鉤引擎被插入到步驟S222中分配的存儲(chǔ)區(qū)域中。所述API掛鉤引擎由API掛鉤執(zhí)行代碼和API掛鉤程序組成。在此情況下,API掛鉤線(xiàn)程的起始地址為API掛鉤執(zhí)行代碼,從而API掛鉤由所述掛鉤線(xiàn)程執(zhí)行。
在步驟S230,在進(jìn)程上執(zhí)行API掛鉤并且運(yùn)行掛鉤程序。盡管存在多種執(zhí)行API掛鉤的方法,本發(fā)明中使用了以跳轉(zhuǎn)命令覆蓋API掛鉤程序從而指示在存儲(chǔ)API進(jìn)程程序的首部之后跳轉(zhuǎn)到API掛鉤程序的方法。也就是說(shuō),如同圖4所示的,指示跳轉(zhuǎn)到API掛鉤程序的跳轉(zhuǎn)命令被插入到系統(tǒng)DLL(d)的API進(jìn)程程序中,從而API掛鉤程序在A(yíng)PI進(jìn)程程序使用API運(yùn)行時(shí)首先被啟動(dòng)。
通過(guò)所述方法,即使API掛鉤引擎被插入到正在執(zhí)行的特定程序中,當(dāng)對(duì)應(yīng)程序調(diào)用API時(shí),API掛鉤程序在A(yíng)PI進(jìn)程程序運(yùn)行之前首先運(yùn)行,從而所述方法是優(yōu)越的,體現(xiàn)在A(yíng)PI掛鉤是在運(yùn)行的特定程序上進(jìn)行的。因此,所述方法的優(yōu)越性體現(xiàn)在通過(guò)在正在運(yùn)行的黑客工具上執(zhí)行API掛鉤而執(zhí)行安全功能。
在步驟230處,當(dāng)API掛鉤程序運(yùn)行時(shí),通過(guò)分析被鉤住的API而確定是否運(yùn)行API進(jìn)程程序,但是所述確定步驟稍后描述。
在步驟S250,如果步驟S230中API掛鉤程序執(zhí)行的結(jié)果使得允許使用API,則運(yùn)行原API進(jìn)程程序。特別地,在步驟S230中,使用存儲(chǔ)的API進(jìn)程程序的首部對(duì)原API進(jìn)程程序進(jìn)行調(diào)用。所存儲(chǔ)的API進(jìn)程程序的首部被匯編為機(jī)器語(yǔ)言代碼以檢測(cè)命令的長(zhǎng)度,并且所存儲(chǔ)部分的命令根據(jù)所述命令長(zhǎng)度而執(zhí)行。在僅存儲(chǔ)了命令某些部分的情況下,命令的剩余部分從API進(jìn)程程序進(jìn)行調(diào)用并且執(zhí)行。此后,步驟跳轉(zhuǎn)到原API進(jìn)程程序。
下面描述在A(yíng)PI掛鉤程序中確定API是否允許使用的步驟。圖5是顯示API掛鉤程序執(zhí)行子程序的詳細(xì)流程圖。
根據(jù)本發(fā)明的API掛鉤引擎將要掛鉤的API連接到對(duì)應(yīng)的API掛鉤程序上。也就是說(shuō),當(dāng)API掛鉤程序被調(diào)用時(shí),可以識(shí)別被調(diào)用的API。因此,當(dāng)存儲(chǔ)器相關(guān)的API(例如OpenProcess,ReadProcessMemory或者WriteProcessMemory)被調(diào)用時(shí),就可能是黑客工具在操縱存儲(chǔ)器,從而運(yùn)行圖5中的API掛鉤程序。當(dāng)消息相關(guān)的API(例如SendInput,SendMessage,PostMessage,mouse_event或者keybsd_event)被調(diào)用時(shí),就可能是自動(dòng)鼠標(biāo)或者用于發(fā)送消息的宏程序,從而運(yùn)行圖5中的API掛鉤程序。
參考圖5,在步驟S231獲取使用API的當(dāng)前進(jìn)程(也就是調(diào)用API掛鉤程序的當(dāng)前進(jìn)程)的信息。在Windows系統(tǒng)中,API在進(jìn)程上下文(context)中被調(diào)用。因此,可以使用GetCurrentProcessID()命令和Windows環(huán)境中的每個(gè)進(jìn)程被分配的唯一PID獲取當(dāng)前上下文的PID,,從而如果檢測(cè)到PID則可以檢測(cè)到當(dāng)前進(jìn)程。
在當(dāng)前進(jìn)程在步驟232中確定為允許進(jìn)程(也就是游戲進(jìn)程或者安全進(jìn)程)的情況下,在步驟S237處對(duì)應(yīng)的API進(jìn)程被允許并且調(diào)用實(shí)際的API進(jìn)程程序。然而,在某些黑客工具的情況下,黑客工具的DLL可能進(jìn)入游戲進(jìn)程并且使用存儲(chǔ)器相關(guān)的API。為了防止此類(lèi)情況,如果游戲進(jìn)程為了該游戲進(jìn)程自身使用了所述存儲(chǔ)器相關(guān)的API,不允許對(duì)應(yīng)的API進(jìn)程運(yùn)行。
然而,如果在步驟232確定當(dāng)前進(jìn)程不是允許進(jìn)程,則在步驟233通過(guò)分析API參數(shù)而檢測(cè)目標(biāo)進(jìn)程和任務(wù)類(lèi)型。如果在步驟234確定目標(biāo)進(jìn)程不是游戲進(jìn)程或者安全進(jìn)程,則在步驟S237允許API進(jìn)程運(yùn)行并且調(diào)用實(shí)際API進(jìn)程程序。如果在步驟S234確定目標(biāo)進(jìn)程是游戲進(jìn)程或者安全進(jìn)程,則檢測(cè)任務(wù)類(lèi)型。如果在步驟S235確定任務(wù)類(lèi)型是存儲(chǔ)器操作或者消息發(fā)送,則在步驟S236阻斷對(duì)應(yīng)的API進(jìn)程程序。然而,如果在步驟S235確定任務(wù)類(lèi)型不是存儲(chǔ)器操作或者消息發(fā)送,則在步驟S237允許對(duì)應(yīng)的API進(jìn)程并且調(diào)用實(shí)際的API進(jìn)程程序。也就是說(shuō),一般進(jìn)程(黑客工具)在游戲進(jìn)程或者安全進(jìn)程上執(zhí)行消息操作API或者消息發(fā)送API,則檢測(cè)該一般進(jìn)程為非法存儲(chǔ)器操作或者消息發(fā)送,并且對(duì)應(yīng)的API進(jìn)程程序被阻斷。
作為示例,下面描述一種通過(guò)分析OpenProcess、WriteProcessMemory和SendMessage等API來(lái)確定訪(fǎng)問(wèn)是否為非法訪(fǎng)問(wèn)的方法。
OpenProcess API包含進(jìn)程打開(kāi)的權(quán)限信息和目標(biāo)進(jìn)程的PID信息。如果目標(biāo)進(jìn)程的PID是游戲進(jìn)程或者安全進(jìn)程的PID,則確定是否正在嘗試啟動(dòng)游戲進(jìn)程或者安全進(jìn)程,從而阻斷對(duì)應(yīng)的API進(jìn)程程序。然而,例如殺毒程序和Windows資源管理器等程序也會(huì)試圖使用該命令獲取進(jìn)程信息,因此要確定何種權(quán)限用于啟動(dòng)目標(biāo)進(jìn)程。也就是說(shuō),即使目標(biāo)進(jìn)程為游戲進(jìn)程或者安全進(jìn)程,在目標(biāo)進(jìn)程僅僅嘗試獲取進(jìn)程名稱(chēng)和路徑信息的情況下,對(duì)應(yīng)的API進(jìn)程程序被允許運(yùn)行。否則,對(duì)應(yīng)的API進(jìn)程程序被阻斷。
WriteProcessMemoryAPI包含將要記錄到存儲(chǔ)器中的目標(biāo)進(jìn)程的句柄信息。由于目標(biāo)進(jìn)程的句柄信息與PID不同,不是能夠標(biāo)識(shí)該進(jìn)程的唯一值,目標(biāo)進(jìn)程的句柄信息必須轉(zhuǎn)換為PID。
參考圖6描述一種轉(zhuǎn)換目標(biāo)進(jìn)程的句柄信息的方法。圖6是顯示構(gòu)建進(jìn)程數(shù)據(jù)庫(kù)和句柄表的視圖。檢測(cè)存儲(chǔ)在屬于每個(gè)進(jìn)程的進(jìn)程數(shù)據(jù)庫(kù)(PDB)61中的句柄表62,并且獲取由目標(biāo)進(jìn)程句柄指示的目標(biāo)進(jìn)程的PDB 63。當(dāng)對(duì)目標(biāo)進(jìn)程的PDB 63和各個(gè)Windows版本的預(yù)定值執(zhí)行邏輯“異或”運(yùn)算時(shí),運(yùn)算結(jié)果為目標(biāo)進(jìn)程的PID。當(dāng)獲取了目標(biāo)進(jìn)程的PID時(shí),將目標(biāo)進(jìn)程的PID與游戲進(jìn)程或者安全進(jìn)程的PID進(jìn)行比較。如果目標(biāo)進(jìn)程的PID與游戲進(jìn)程或者安全進(jìn)程的PID相同,則對(duì)應(yīng)的進(jìn)程程序被阻斷。通過(guò)所述方法,試圖進(jìn)行非法操作的黑客工具可以基本上被阻斷。
SendMessage API包含關(guān)于發(fā)送消息的Windows句柄和待發(fā)送的消息類(lèi)型的信息。Window句柄信息是唯一值。因此,將Windows句柄信息與游戲的Windows句柄進(jìn)行比較。如果Windows句柄信息與游戲的Windows句柄相同并且消息類(lèi)型為鼠標(biāo)或者鍵盤(pán)消息,則阻斷SendMessage API。通過(guò)所述方法,基本上保護(hù)了游戲使之不受自動(dòng)鼠標(biāo)或者宏程序影響。
在本說(shuō)明書(shū)中,盡管描述了應(yīng)用到Windows操作系統(tǒng)的本發(fā)明的實(shí)施例,但是本發(fā)明并不局限于此。也就是說(shuō),本發(fā)明可以應(yīng)用到其它操作系統(tǒng)。插入API掛鉤程序的步驟根據(jù)操作系統(tǒng)可以被省略。
根據(jù)本發(fā)明,由于可以基本上阻斷使用特定API的黑客工具或者自動(dòng)鼠標(biāo)程序,本發(fā)明的優(yōu)點(diǎn)在于可以保護(hù)使用在線(xiàn)游戲的游戲使用者和在線(xiàn)游戲服務(wù)器。而且,本發(fā)明使得使用在線(xiàn)游戲的游戲使用者公平的游戲和競(jìng)爭(zhēng),因此最終建立健康的在線(xiàn)游戲文化。
盡管為了示例目的而公開(kāi)了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域技術(shù)人員可以理解各種修改、添加和替代均是可能的,但并不背離所附權(quán)利要求書(shū)中公開(kāi)的本發(fā)明的范圍和精神。
權(quán)利要求
1.一種在計(jì)算機(jī)系統(tǒng)中阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和操作的方法,包括步驟安裝API掛鉤程序以選擇性地允許和阻斷計(jì)算機(jī)系統(tǒng)中API進(jìn)程程序的執(zhí)行;在計(jì)算機(jī)系統(tǒng)中運(yùn)行的進(jìn)程所使用的API上掛上掛鉤;在被掛鉤的API上運(yùn)行API掛鉤程序并且確定是否允許所述API進(jìn)程程序執(zhí)行;以及如果所述API進(jìn)程程序被允許則運(yùn)行該API進(jìn)程程序。
2.根據(jù)權(quán)利要求1所述的方法,其中進(jìn)一步包括將所述API掛鉤程序插入到運(yùn)行在計(jì)算機(jī)系統(tǒng)中的進(jìn)程的存儲(chǔ)區(qū)中的步驟。
3.根據(jù)權(quán)利要求2所述的方法,其中所述插入API掛鉤程序的步驟包括下列步驟啟動(dòng)目標(biāo)進(jìn)程,所述目標(biāo)進(jìn)程內(nèi)將會(huì)插入所述API掛鉤程序,使用完全權(quán)限并使用目標(biāo)進(jìn)程的PID,并且存儲(chǔ)目標(biāo)進(jìn)程的句柄;使用所述目標(biāo)進(jìn)程的句柄為所述目標(biāo)進(jìn)程分配可讀/可寫(xiě)/可執(zhí)行的存儲(chǔ)區(qū);在所分配的存儲(chǔ)區(qū)中記錄所述API掛鉤程序;以及生成所述API掛鉤程序的起始地址的線(xiàn)程。
4.根據(jù)權(quán)利要求3所述的方法,其中所述插入API掛鉤程序的步驟是通過(guò)覆蓋跳轉(zhuǎn)命令而進(jìn)行的,所述跳轉(zhuǎn)命令用于指示在存儲(chǔ)API進(jìn)程程序的首部之后跳轉(zhuǎn)到API進(jìn)程程序的首部。
5.根據(jù)權(quán)利要求4所述的方法,其中所述執(zhí)行API掛鉤程序的步驟包括下列步驟使用所存儲(chǔ)的API進(jìn)程程序的首部的機(jī)器語(yǔ)言代碼來(lái)計(jì)算命令長(zhǎng)度;根據(jù)所計(jì)算的命令長(zhǎng)度執(zhí)行所存儲(chǔ)的API進(jìn)程程序的首部的命令;跳轉(zhuǎn)到所述API進(jìn)程程序;以及執(zhí)行所述API進(jìn)程程序的剩余命令。
6.根據(jù)權(quán)利要求1所述的方法,其中所述執(zhí)行API掛鉤程序的步驟包括下列步驟檢測(cè)使用被掛鉤的API的當(dāng)前進(jìn)程;檢測(cè)當(dāng)前進(jìn)程的API使用權(quán)限、API的目標(biāo)進(jìn)程和API任務(wù)的類(lèi)型;以及根據(jù)所述當(dāng)前進(jìn)程的API使用權(quán)限、API的目標(biāo)進(jìn)程和API任務(wù)的類(lèi)型而確定是否允許所述API進(jìn)程程序運(yùn)行。
7.根據(jù)權(quán)利要求6所述的方法,其中所述檢測(cè)當(dāng)前進(jìn)程的API使用權(quán)限的步驟是通過(guò)抽取當(dāng)前上下文的PID而檢測(cè)當(dāng)前進(jìn)程來(lái)進(jìn)行的。
8.根據(jù)權(quán)利要求6所述的方法,其中所述檢測(cè)API的目標(biāo)進(jìn)程和API任務(wù)的類(lèi)型的步驟是通過(guò)分析所述API的參數(shù)而檢測(cè)所述API的目標(biāo)進(jìn)程來(lái)進(jìn)行的。
9.根據(jù)權(quán)利要求8所述的方法,其中當(dāng)所述API僅僅包含目標(biāo)進(jìn)程的句柄信息時(shí)所述檢測(cè)API的目標(biāo)進(jìn)程的步驟包括下列步驟通過(guò)檢查存儲(chǔ)在當(dāng)前進(jìn)程的進(jìn)程數(shù)據(jù)庫(kù)中的句柄表而獲取由目標(biāo)進(jìn)程的句柄所指示的進(jìn)程數(shù)據(jù)庫(kù);以及通過(guò)對(duì)所獲取的進(jìn)程數(shù)據(jù)庫(kù)和Windows系統(tǒng)中的預(yù)定值進(jìn)行邏輯“異或”運(yùn)算而獲取目標(biāo)進(jìn)程的PID。
10.根據(jù)權(quán)利要求6所述的方法,其中所述確定是否允許運(yùn)行API進(jìn)程程序的步驟是以如下的方式來(lái)進(jìn)行的,即如果當(dāng)前進(jìn)程是API使用權(quán)限被允許的進(jìn)程,則所述API進(jìn)程程序被允許運(yùn)行。
11.根據(jù)權(quán)利要求10所述的方法,其中所述確定是否允許運(yùn)行API進(jìn)程程序的步驟是以如下的方式來(lái)進(jìn)行的,即如果當(dāng)前進(jìn)程是API使用權(quán)限被允許的進(jìn)程并且所述API目標(biāo)進(jìn)程是當(dāng)前進(jìn)程,則所述API進(jìn)程程序被阻斷。
12.根據(jù)權(quán)利要求6所述的方法,其中所述確定是否允許運(yùn)行API進(jìn)程程序的方法是以如下的方式來(lái)進(jìn)行的,即如果當(dāng)前進(jìn)程是API使用權(quán)限不被允許的進(jìn)程并且所述API目標(biāo)進(jìn)程不是游戲進(jìn)程或安全進(jìn)程,則所述API進(jìn)程程序被允許運(yùn)行。
13.根據(jù)權(quán)利要求6所述的方法,其中所述確定是否允許運(yùn)行API進(jìn)程程序的方法是以如下的方式來(lái)進(jìn)行的,即如果當(dāng)前進(jìn)程是API使用權(quán)限不被允許的進(jìn)程并且所述API目標(biāo)進(jìn)程是游戲進(jìn)程或安全進(jìn)程以及所述API任務(wù)的類(lèi)型不是存儲(chǔ)器操作或者消息發(fā)送,則所述API進(jìn)程程序被允許運(yùn)行。
14.根據(jù)權(quán)利要求6所述的方法,其中所述確定是否允許運(yùn)行API進(jìn)程程序的方法是以如下的方式來(lái)進(jìn)行的,即如果當(dāng)前進(jìn)程是API使用權(quán)限不被允許的進(jìn)程并且所述API目標(biāo)進(jìn)程是游戲進(jìn)程或安全進(jìn)程以及所述API任務(wù)的類(lèi)型是存儲(chǔ)器操作或者消息發(fā)送,則所述API進(jìn)程程序被阻斷。
15.一種計(jì)算機(jī)可讀的記錄媒介,包括步驟生成選擇性地允許和阻斷API進(jìn)程程序執(zhí)行的API掛鉤程序;在當(dāng)前運(yùn)行的進(jìn)程所使用的API上掛上掛鉤;在所述被掛鉤的API上運(yùn)行所述API掛鉤程序,并且確定是否允許所述API進(jìn)程程序的執(zhí)行;以及如果所述API進(jìn)程程序被允許運(yùn)行則運(yùn)行所述API進(jìn)程程序。
全文摘要
本發(fā)明涉及一種實(shí)時(shí)阻斷對(duì)游戲進(jìn)程的非法訪(fǎng)問(wèn)和操作以確保在線(xiàn)游戲安全的方法,所述方法使用應(yīng)用程序接口(API)掛鉤技術(shù)能夠防止黑客工具非法訪(fǎng)問(wèn)在線(xiàn)游戲。根據(jù)本發(fā)明的阻斷對(duì)進(jìn)程的非法訪(fǎng)問(wèn)和操作的方法包括步驟安裝API掛鉤程序用于選擇性地允許或者阻斷計(jì)算機(jī)系統(tǒng)中API進(jìn)程程序的執(zhí)行,在計(jì)算機(jī)系統(tǒng)中運(yùn)行的進(jìn)程所使用的API上掛上掛鉤,在被掛鉤的API上執(zhí)行API掛鉤程序并且確定是否允許API進(jìn)程程序的執(zhí)行,并且如果API進(jìn)程程序被允許運(yùn)行則運(yùn)行該API進(jìn)程程序。
文檔編號(hào)G06F21/22GK1624617SQ20041009604
公開(kāi)日2005年6月8日 申請(qǐng)日期2004年11月26日 優(yōu)先權(quán)日2003年12月3日
發(fā)明者金贊浩 申請(qǐng)人:株式會(huì)社因卡網(wǎng)絡(luò)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
沁阳市| 东乌珠穆沁旗| 虎林市| 新乡市| 逊克县| 松溪县| 岳阳县| 涞水县| 马关县| 开封县| 米林县| 肇东市| 平邑县| 曲阜市| 商南县| 曲周县| 东乌| 贡山| 和田县| 定日县| 娄底市| 六安市| 尚义县| 榆林市| 太湖县| 绥德县| 中西区| 和林格尔县| 乐东| 高阳县| 启东市| 浮梁县| 利辛县| 利津县| 宜阳县| 邵阳县| 榕江县| 景洪市| 布尔津县| 西华县| 扬中市|