
- 類(lèi)型:游戲其他大。285KB語(yǔ)言:中文 評(píng)分:1.5
- 標(biāo)簽:
很多玩游戲的朋友都喜歡多開(kāi),大型游戲像cf,就連qq游戲大廳也想著多開(kāi),其實(shí)沒(méi)多大意思,西西今天給大家分享游戲多開(kāi)的原理,一起學(xué)習(xí)下吧!
其實(shí)要實(shí)現(xiàn)游戲多開(kāi)也不是一件很難的事情,只要大家懂得游戲防止多開(kāi)的原理,然后根據(jù)其對(duì)應(yīng)游戲多開(kāi)的方法便可以做出游戲多開(kāi)器來(lái)了。
游戲多開(kāi)的原理與方法:
第一,進(jìn)程隱藏
部分游戲通過(guò)探測(cè)游戲客戶端進(jìn)程是否已經(jīng)存在來(lái)防止重復(fù)打開(kāi),如游戲:英雄美人游戲多開(kāi)的辦法為啟動(dòng)一個(gè)游戲客戶端后,將該游戲的進(jìn)程隱藏,只保留一個(gè)或多個(gè)。
第二,窗口標(biāo)題修改(使用FindWindow API函數(shù))
部分游戲通過(guò)探測(cè)游戲客戶端的窗口是否已經(jīng)存在來(lái)防止重復(fù)打開(kāi)。游戲多開(kāi)的辦法為將游戲的窗口修改為任意字符。
第三,端口隱藏
部分游戲通過(guò)默認(rèn)打開(kāi)TCP或者UDP端口監(jiān)聽(tīng),開(kāi)第二個(gè)游戲的時(shí)候會(huì)打開(kāi)端口失敗從而判斷游戲是否多開(kāi)。游戲多開(kāi)的方法為此類(lèi)需要采用netstat –a –n –o 命令查看端口即可實(shí)現(xiàn)游戲多開(kāi)。
第四,多個(gè)游戲目錄
部分游戲通過(guò)獨(dú)占文件訪問(wèn)來(lái)防止重復(fù)打開(kāi)。
游戲多開(kāi)的方法為復(fù)制游戲客戶端到另外的文件夾,在另外的文件夾打開(kāi)即可。
第五,多個(gè)操作系統(tǒng)賬號(hào)(僅限XP系統(tǒng))
部分游戲通過(guò)限制一個(gè)用戶只能打開(kāi)一個(gè)游戲來(lái)防止重復(fù)打開(kāi)。游戲多開(kāi)的方法為在系統(tǒng)賬號(hào)里面多建立賬號(hào),一個(gè)游戲使用一個(gè)賬號(hào)。
方法如下:
1、打開(kāi)控制面版→用戶帳戶→創(chuàng)建一個(gè)新帳戶→輸入新帳戶名(下一步)→創(chuàng)建帳戶;
2、然后到桌面的游戲快捷圖標(biāo)上右鍵到[屬性] 選[高級(jí)] 把里面[以其他用戶身份運(yùn)行]這個(gè)選項(xiàng)勾上 開(kāi)第2個(gè)程序的時(shí)候記得用你新建的用戶進(jìn)就可以了,省的老去切換用戶了。
第六,互斥體。
部分游戲通過(guò)互斥對(duì)象/信號(hào)量/事件等線程同步對(duì)象來(lái)確定程序是否已經(jīng)運(yùn)行。最常用的函數(shù)如:CreateMutexA。
1、首先創(chuàng)建一個(gè)互斥體,CreateMutex函數(shù),第一個(gè)參數(shù)可以設(shè)置為NULL,第二個(gè)參數(shù)必須設(shè)置為false,第三個(gè)參數(shù)表示互斥體的名稱(chēng),這個(gè)名稱(chēng)最好有一些特殊標(biāo)識(shí)以防止與其他應(yīng)用程序沖突,比如程序名+時(shí)間。
2、使用GetLastError()函數(shù)判斷錯(cuò)誤信息是否為ERROR_ALREADY_EXISTS,如果是,則表示程序已經(jīng)啟動(dòng)。
游戲多開(kāi)的方法有二種,一為發(fā)現(xiàn)互斥體,然后關(guān)閉互斥體即可實(shí)現(xiàn)多開(kāi)。二為APIHOOK,接收到錯(cuò)誤信息時(shí),加重置命令(置錯(cuò)誤碼=0)即可。QQ游戲,天龍八部==最常見(jiàn)的類(lèi)型
第七,內(nèi)存映射文件(File Mapping)
部分游戲通過(guò)把程序?qū)嵗畔⒎诺娇邕M(jìn)程的內(nèi)存映射文件中,防止游戲多開(kāi)。游戲多開(kāi)的方法為攔阻該函數(shù),不讓它命名內(nèi)核文件即可實(shí)現(xiàn)多開(kāi)。
第八,DLL全局共享
DLL全局共享區(qū)在映射到各個(gè)進(jìn)程的地址空間時(shí)僅被初始化一次,且是在第一次被windows加載時(shí),所以利用該區(qū)數(shù)據(jù)就能對(duì)程序進(jìn)行多開(kāi)限制。游戲多開(kāi)的方法為DLL劫持讓游戲一開(kāi)始運(yùn)行就加載你的DLL,再轉(zhuǎn)到原來(lái)的dll上就可以實(shí)現(xiàn)多開(kāi)了。
第九,使用公共文件
程序啟動(dòng)時(shí),在一個(gè)公共目錄(比如C:\或者Temp目錄)中創(chuàng)建一個(gè)公共文件,并將此文件設(shè)置為不共享讀寫(xiě)。第二個(gè)程序啟動(dòng)時(shí),也打開(kāi)此文件,如果打開(kāi)成功,則表示程序未啟動(dòng)過(guò),否則表示程序已經(jīng)啟動(dòng)。
游戲多開(kāi)的方法為:手動(dòng)設(shè)置多開(kāi),比如:設(shè)定文件訪問(wèn)權(quán)限,不允許此程序在公共目錄創(chuàng)建文件等。
第十,Mac地址驗(yàn)證
登陸服務(wù)器時(shí),獲取本機(jī)mac地址,發(fā)送至服務(wù)器端,服務(wù)端進(jìn)行mac地址驗(yàn)證,如果mac地址重復(fù)登陸,則不允許同服務(wù)器進(jìn)行消息傳遞。
多開(kāi)游戲的多法為:使用超級(jí)兔子等軟件修改mac地址實(shí)現(xiàn)多開(kāi),針對(duì)此情況,本人也寫(xiě)了一個(gè)修改Mac地址的小工具,大家可以在網(wǎng)站下載。
第十一,查看網(wǎng)絡(luò)連接
獲取本機(jī)所有網(wǎng)絡(luò)連接,使用GetTcpTable獲取TCP連接,使用GetUdpTable獲取UDP連接,檢查是否有連接到服務(wù)器IP和端口號(hào)的連接,如果有,表示程序已經(jīng)啟動(dòng),否則程序未啟動(dòng)。需要注意的是,其獲取的ip和端口號(hào)都是一個(gè)DWORD值,并且高低位相反。IP地址可以通過(guò)inet_addr函數(shù)將字符串形式的IP地址(如“127.0.0.1”)轉(zhuǎn)換為DWORD型的,端口號(hào)可以使用以下公式轉(zhuǎn)換:DWORD dwPort = ((nPort & 0xff) << 8) + ((nPort & 0xff00) >> 8);
多開(kāi)游戲的方法為:掛系統(tǒng)鉤子,導(dǎo)致GetTcpTable函數(shù)失敗實(shí)現(xiàn)多開(kāi)。
游戲防止多開(kāi)的方法有時(shí)候并不是只用一個(gè)方法的,多數(shù)游戲都會(huì)用多種方法一起來(lái)防止多開(kāi)的,只要大家都懂得這幾個(gè)游戲多開(kāi)的原理,靈活運(yùn)行,一個(gè)一個(gè)分析排查,基本上都能解決各種游戲多開(kāi)了.。