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