freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

游戲外掛制作基礎(chǔ)[適合入門]-閱讀頁

2025-07-09 04:44本頁面
  

【正文】 消全局鉤子?!    (7).編譯項目,并運行程序,單擊按鈕激活外掛。圖一展示了按F10鍵前的畫筆程序的狀態(tài),圖二展示了按F10鍵后的畫筆程序的狀態(tài)。這種動作模擬型游戲外掛有一定的局限性,它僅僅只能解決使用計算機代替人力完成那么有規(guī)律、繁瑣而無聊的游戲動作。為了更好地“外掛”這些游戲,游戲外掛程序也進行了升級換代,它們將以前針對游戲用戶界面層的模擬推進到數(shù)據(jù)通訊層,通過封包技術(shù)在客戶端擋截游戲服務(wù)器發(fā)送來的游戲控制數(shù)據(jù)包,分析數(shù)據(jù)包并修改數(shù)據(jù)包;同時還需按照游戲數(shù)據(jù)包結(jié)構(gòu)創(chuàng)建數(shù)據(jù),再模擬客戶端發(fā)送給游戲服務(wù)器,這個過程其實就是一個封包的過程。封包技術(shù)涉及的知識很廣泛,實現(xiàn)方法也很多,如擋截WinSock、擋截API函數(shù)、擋截消息、VxD驅(qū)動程序等。  1. 擋截WinSock  眾所周知,Winsock是Windows網(wǎng)絡(luò)編程接口,它工作于Windows應(yīng)用層,它提供與底層傳輸協(xié)議無關(guān)的高層數(shù)據(jù)傳輸編程接口。由上說明可知,任何Windows基于TCP/IP的應(yīng)用程序都必須通過WinSock接口訪問網(wǎng)絡(luò),當(dāng)然網(wǎng)絡(luò)游戲程序也不例外。按著這個思路,下面的工作就是如何完成控制WinSock接口了。有了這層的認(rèn)識,問題就好辦多了,我們可以制作一個類似的動態(tài)鏈接庫來代替原WinSock接口庫,并保證所有函數(shù)的參數(shù)個數(shù)和順序、返回值類型都應(yīng)與原庫相同?! ∠旅嬷攸c介紹創(chuàng)建擋截WinSock外掛程序的基本步驟:  (1) 創(chuàng)建DLL項目,選擇Win32 DynamicLink Library,再選擇An empty DLL project。 //模塊句柄   char buffer[1000]。 //函數(shù)入口指針  ② 定義指向原WinSock庫中的所有函數(shù)地址的指針變量,因WinSock庫共提供70多個函數(shù),限于篇,在此就只選擇幾個常用的函數(shù)列出,有關(guān)這些庫函數(shù)的說明可參考MSDN相關(guān)內(nèi)容?!  OCKET (__stdcall *socket1)(int ,int,int)?!  nt (__stdcall *WSAStartup1)(WORD,LPWSADATA)?!  nt (__stdcall *WSACleanup1)()?!  nt (__stdcall *recv1)(SOCKET ,char FAR * ,int ,int )?!  nt (__stdcall *send1)(SOCKET ,const char * ,int ,int)?!  nt (__stdcall *connect1)(SOCKET,const struct sockaddr *,int)。   int (__stdcall *bind1)(SOCKET ,const struct sockaddr *,int )?!  ?.....其它函數(shù)地址指針的定義略。代碼如下:   BOOL WINAPI DllMain (HANDLE hInst,ULONG ul_reason_for_call,LPVOID lpReserved)   {    if(hModule==NULL){     //加載原WinSock庫?!     else return 1。if(hModule!=NULL){     //獲取原WinSock庫初始化函數(shù)的地址,并保存到WSAStartup1中?!  SAStartup1=(int (_stdcall *)(WORD,LPWSADATA))proc。    proc=GetProcAddress(hModule i,WSACleanup)。//獲取原創(chuàng)建Sock函數(shù)的地址,并保存到socket1中?!    ocket1=(SOCKET (_stdcall *)(int ,int,int))proc。     proc=GetProcAddress(hModule,connect)?!    ?/獲取原發(fā)送函數(shù)的地址,并保存到send1中?!    end1=(int (_stdcall *)(SOCKET ,const char * ,int ,int ))proc?!    roc=GetProcAddress(hModule,recv)。     ......其它獲取函數(shù)地址代碼略。   return 1。部分輸出函數(shù)定義代碼如下://庫輸出函數(shù)定義?!   nt PASCAL FAR WSAStartup(WORD wVersionRequired, LPWSADATAlpWSAData)    {     //調(diào)用原WinSock庫初始化函數(shù)     return WSAStartup1(wVersionRequired,lpWSAData)?!   nt PASCAL FAR WSACleanup(void)    {     return WSACleanup1()。    }    //創(chuàng)建Socket函數(shù)?!    eturn socket1(af,type,protocol)?!  ⊥鈷齑a......   //調(diào)用原WinSock庫發(fā)送數(shù)據(jù)包函數(shù)?!   //接收數(shù)據(jù)包函數(shù)?!  trcpy(buffer,buf)?!  ⊥鈷齑a......   //最后調(diào)用原WinSock中的接收數(shù)據(jù)包函數(shù)?!        .......其它函數(shù)定義代碼略。(5)、從“工程”菜單中選擇“設(shè)置”,彈出Project Setting對話框,選擇Link標(biāo)簽,在“對象/庫模塊”?! ?7);。上面我們僅僅介紹了擋載WinSock的實現(xiàn)過程,至于如何加入外掛控制代碼,還需要外掛開發(fā)人員對游戲數(shù)據(jù)包結(jié)構(gòu)、內(nèi)容、加密算法等方面的仔細(xì)分析(這個過程將是一個艱辛的過程),再生成外掛控制代碼。) include ?! ?7) 重新編譯ActiveKey項目。同樣,如此程序正在接收網(wǎng)絡(luò)數(shù)據(jù)包,就可以實現(xiàn)封包功能了。在這篇文章里,就不逐一介
點擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1