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