999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

網絡游戲外掛技術

2013-11-30 03:13:40
山東工業技術 2013年10期
關鍵詞:進程游戲

蘇 警

(安徽電子信息職業技術學院,安徽 蚌埠233000)

0 引言

所謂游戲外掛,是一種游戲外部的輔助程序,它可以幫助玩家自動生成游戲動作、修改游戲的網絡數據封包等,使玩家以最少的時間和精力完成游戲中的各種任務。隨著網絡游戲的不斷升溫,游戲外掛作為其附屬品也得到了迅猛的發展。從最初的鼠標鍵盤模擬和變速齒輪技術發展到擋截Sock、擋截API等高端技術的應用。

事物都有兩面性,游戲外掛也不例外。一方面,它可以使玩家從機械的、重復的操作中解放出來,使游戲更加人性化,娛樂化。另一方面,一些惡意外掛篡改游戲數據,欺騙服務器,嚴重破壞了游戲的公平性,使玩家大量流失。因此,外掛的開發應僅限于研究和學習編程技術之用。

1 外掛技術綜述

外掛的種類紛繁復雜,功能也多種多樣。針對同一款網絡游戲的外掛甚至多達幾十種,功能相同的外掛實現起來也有若干種不同的技術,例如本文下面要談到的某網絡斗地主游戲記牌器外掛的實現方式至少有三種,通過分析屏幕撲克牌的圖片、通過讀取游戲在本地機所使用的內存空間、截獲并分析數據封包。因此對網游外掛做一個科學的分類顯得十分必要。按照外掛所針對的游戲類型,可以把其分為兩大類即,模擬玩家鼠標、鍵盤操作的動作模擬類外掛和截獲數據封包,提取或修改其中數據的封包類外掛。下面對兩類外掛所采用的技術進行詳細說明。

1.1 動作模擬類外掛

動作模擬類外掛可以在沒有人為干預的情況下,自動控制游戲中的角色,使其四處行走或者發動攻擊。此類外掛看似復雜,其實原理非常簡單。游戲中角色的行動是靠鼠標與鍵盤控制,此類外掛就是調用相關的API函數,來模擬玩家對鼠標和鍵盤的操作,從而控制游戲中的角色。

1.1.1 鼠標模擬技術

鼠標的操作包含以下幾種,點擊左鍵、點擊右鍵、點擊中鍵、移動鼠標改變相應窗體中指針的位置。下面介紹實現以上操作所需要的API函數。

1)mouse_event函數,模擬鼠標發出按下和放開左右鍵的動作,其格式如下:

其中,dwFlags表示各種鼠標動作,如MOUSEEVENTF_LEFTDOWN表示模擬按下鼠標左鍵、MOUSEEVENTF_LEFTUP表示模擬放開鼠標左鍵、MOUSEEVENTF_MOVE表示模擬鼠標移動事件等。

游戲中角色的移動一般是將鼠標移動到目的地,然后按下鼠標左鍵來完成的。下面利用上面介紹的API函數來模擬角色的移動。

CPoint oldPoint,newPoint;

GetCursorPos(&oldPoint);//保存當前鼠標位置

newPoint=SetPoint(oldPoint);//SetPoint為自編的坐標設置函數

SetCursorPos(newPoint.x,newPoint.y);//設置目的地位置

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模擬按下鼠標左鍵

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//模擬放開鼠標左鍵

1.1.2 鍵盤模擬技術

鍵盤的操作比較簡單,只有按鍵的按下與放開兩種。通過keydb_event函數模擬鍵盤動作,其格式如下:

下面利用該函數來模擬按下Ctrl+C的操作。

keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),0,0);//按下CTRL鍵

keybd_event(0x43,MapVirtualKey(0x43,0),0,0);//鍵下C鍵

keybd_event(0x43,MapVirtualKey(0x43,0),KEYEVENTF_KEYUP,0);//放開C鍵

keybd_event(VK_CONTROL,MapVirtualKey(VK_CONTROL,0),

KEYEVENTF_KEYUP,0);//放開CTRL鍵

其中,MapVirtualKey函數功能是在虛擬鍵值與掃描碼之間進行轉換。

1.2 封包類外掛

網絡游戲最大的特點在于分布在各地的玩家之間可以相互通信,實現這個功能的關鍵是玩家在游戲中所做的任何操作,都會以數據封包的形式發送至服務器,服務器經過處理后再把數據封包反饋給游戲中的玩家們。

封包類外掛利用網絡游戲這個特點,在客戶端攔截服務器發送來的數據封包,采用特定的方法對封包內的數據進行分析,最后按照需要修改封包內的數據模擬客戶端發送至服務器。此類外掛實現的關鍵技術涉及兩個方面:封包截獲與封包數據的分析。

1.2.1 封包截獲

API Hook技術是封包截獲的核心,是指攔截API調用的過程。API Hook技術的應用十分廣泛,如實時翻譯系統中屏幕取詞功能。API Hook一般由兩部分組成:Hook服務器和Hook驅動器。Hook服務器一般以exe的形式出現,主要負責把Hook驅動器注入到目標進程或模塊中。Hook驅動器一般以DLL的形式出現,主要負責API的攔截工作。至此,又涉及到兩個核心技術:DLL注入技術與API攔截技術。

圖1 API Hook系統實現結構[2]

1)DLL 注入技術

DLL的注入方法有很多種,由于篇幅有限,只介紹兩種比較常用的方法,即利用全局鉤子進行DLL注入和利用遠程線程進行DLL注入。下面分別介紹。

全局鉤子必須在DLL中也就是Hook驅動器中實現,原理是當待注入進程在接收到某一消息時,消息不會先到這個進程,而是先到DLL中的鉤子函數中,由鉤子先處理這個消息后再傳遞到接收這個消息的進程中。也就是說,當待注入進程的消息被一個鉤子截獲時,相當于這個進程調用了DLL中的鉤子函數,系統便會強制把DLL文件映射到這個進程的地址空間中,供這個進程使用。以上是利用全局鉤子進行DLL注入的全過程。可以通過SetWindowsHookEx函數在系統中安裝鉤子,通過UnHookWindowsHookEx卸載鉤子。

利用遠程線程進行DLL注入的步驟:利用OpenProcess函數取得遠程進程的進程ID;利用VirtualAllocEx函數在遠程進程空間中分配一段內存用來存放要注入的DLL完整路徑;利用WriteProcessMemory函數將要注入的DLL的路徑寫到剛才分配的遠程進程空間;利用GetProcAddress函數從Kernel32.dll中取得LoadLibray的地址;利用CreateRemoteThread函數以從Kernel32.dll中取得的LoadLibrary函數的地址為線程函數的地址,以我們要注入的DLL文件名為參數,創建遠程線程。

2)API攔截技術

API攔截的實現方法也有多種,本文重點介紹兩種最為常用的技術,即擋截Winsock和擋截API函數。

Winsock是Windows網絡編程接口。在Windows系統中,使用Winsock接口為應用程序提供基于TCP/IP協議的網絡訪問服務,而這些服務是由 Wsock32.DLL提供的函數庫來完成的。因此,任何Windows基于TCP/IP的應用程序都必須通過Winsock接口訪問網絡。擋截Winsock的原理是由自己寫一個與原有進程調用的Wsock32.DLL具有相同接口函數的DLL,再用重寫的DLL替換原有的DLL。在替換的過程中,可以對感興趣的函數進行擋截,放入外掛控制代碼,而對其它不感興趣的函數,則以函數轉發的形式調用原有Wsock32.DLL中的函數。

實現擋截API的常用方法是改寫執行代碼,主要步驟是:利用GetProcAddress函數獲取所要擋截的API函數的地址;利用VirtualQuery函數查詢關于本進程內虛擬地址頁的信息,利用VirtualProtect函數改變本進程內虛擬地址頁的保護屬性;利用WriteProcessMemory函數修改原API函數執行代碼的前8個字節,使得對該API函數的調用能轉向自定義的函數調用。除此之外,還可以通過改寫PE文件的輸入地址表來實現擋截API的功能,有關此方法可以參見MSDN的相關內容。

1.2.2 封包數據分析

封包數據分析的過程非常復雜,需要分析人員有極大的耐心和毅力。首先,封包內數據的格式很復雜,需要經過反復的試驗與分析,才能得出數據中每個字節在游戲中所表示的含意。其次,絕大部分游戲對封包內的數據進行了加密處理。在網絡游戲出現的初期,只要掌握幾種簡單的加密解密算法,就可以通過對封包內數據的分析得出封包的加密解密算法。但隨著機器性能的提高與網絡帶寬的提升,游戲開發商對封包的加密與解密算法設計的越來越復雜,單純的通過封包內數據的分析已經很難推出加密解密算法。目前破解封包加密與解密算法的方法主要是通過動態調試技術來實現的。其原理是首先通過動態調試跟蹤并取出加密與解密算法的代碼段,然后再通過分析這些代碼最終得出結論。動態調試主要是跟蹤代碼的執行,一般跟蹤的起點可以是windows消息、socket中的send與recv等函數。動態調試工具一般采用OllyDbg,softice等工具。動態調試工具所跟蹤的代碼都是以匯編語言的形式反饋給用戶,匯編語言相對高級語言難以讀懂,一般可以通過代碼反推導將匯編語言轉換為相應的高級語言,步驟如下:首先,可以將匯編碼寫成三元表達碼,其次,將代碼中的轉移指令轉換為條件語句或循環語句,再次,將代碼中的變量進行迭代,最后,進行變量形式轉換與語句形式轉換。當然我們對代碼進行動態調試的目的是為了掌握封包的加密算法,進而對封包中的數據進行分析,通過大量的實驗,最終讀懂封包中重要數據的含意。為后面的編程工作做好準備。

2 結束結

外掛程序對網絡游戲的環境安全和健康發展有著極大的影響,防治外掛必然要對外掛的實現技術有所了解。但防治外掛僅靠技術手段是很難實現的,因為在網絡世界沒有什么是絕對安全絕對保密的。技術手段只能是盡可能的加大外掛制作的難度,拖延外掛開發的時間而已,并不可能完全杜絕外掛。因此外掛的防治必須要多管齊下,尤其是加強游戲信用體制的建設,完善相應的法律法規,以促進網絡游戲更好,更快的發展。

[1]劉克勝,王忠壽.API Hook 關鍵技術解析[J].網絡安全,2006,22(8):48-50.

[2]周毅.探討游戲外掛應用技術[J].中文信息,2003(10):22-25.

[3]王遠.Windows 系統 API函數攔截技術研究[J].微計算機信息,2006,22(10):224-226.

猜你喜歡
進程游戲
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 亚洲天堂2014| 青青草国产在线视频| 婷婷中文在线| 精品福利一区二区免费视频| 这里只有精品在线播放| 永久天堂网Av| 欧美怡红院视频一区二区三区| 欧美日韩动态图| 99热国产在线精品99| 中文字幕首页系列人妻| 亚洲国产一区在线观看| 精品福利国产| 丁香五月激情图片| 亚洲av日韩av制服丝袜| 久久天天躁狠狠躁夜夜躁| 亚洲成人一区二区三区| 亚洲成肉网| 久久五月视频| 老司机aⅴ在线精品导航| 福利在线免费视频| 精品無碼一區在線觀看 | 92精品国产自产在线观看| 欧美国产日韩一区二区三区精品影视| 91精品综合| 亚洲综合国产一区二区三区| 亚洲色欲色欲www网| 国产xxxxx免费视频| 奇米影视狠狠精品7777| 日本在线欧美在线| 国产亚洲精品无码专| 激情乱人伦| 伊人丁香五月天久久综合| 丰满人妻久久中文字幕| www.国产福利| 91无码网站| 成·人免费午夜无码视频在线观看| 2048国产精品原创综合在线| 成·人免费午夜无码视频在线观看| 97在线公开视频| 波多野结衣在线se| 国产一级毛片网站| a毛片基地免费大全| 亚洲a免费| 久久国产精品娇妻素人| 日韩精品一区二区三区免费在线观看| 91蝌蚪视频在线观看| 视频一区视频二区日韩专区| 亚洲精品人成网线在线| 色综合中文| 国产制服丝袜无码视频| 国产在线高清一级毛片| 91精品国产福利| 国产欧美高清| 精品国产美女福到在线直播| 欧美国产成人在线| 亚洲手机在线| 国产麻豆永久视频| 日韩精品成人在线| 国产男人的天堂| 精品视频在线一区| 四虎国产精品永久在线网址| 国产精品美女网站| 在线免费不卡视频| 亚洲另类第一页| 99在线视频免费| 波多野衣结在线精品二区| 日韩色图在线观看| 精品自窥自偷在线看| 久久精品中文字幕少妇| 久草视频一区| 亚洲V日韩V无码一区二区| 在线a视频免费观看| 青草视频在线观看国产| 免费人成又黄又爽的视频网站| 在线免费看片a| 丁香六月激情综合| 在线中文字幕日韩| 2020精品极品国产色在线观看| 国内自拍久第一页| 2022国产无码在线| 91视频青青草| 亚洲福利视频一区二区|