久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日頭條 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 網站建設 » 正文

游戲公司為啥這么仇視外掛?

放大字體  縮小字體 發布日期:2018-02-18  來源:新格網  作者:新格網  瀏覽次數:927  【去百度看看】
核心提示:有群友在討論外掛的問題,這里一般是指游戲外掛但不限于。有些群友想學習編寫游戲外掛但不知道需要具備哪些編程技術和實現原理。要解決這些問題的先來認識一下游戲外掛,那到底什么是外掛,又該

有群友在討論外掛的問題,這里一般是指游戲外掛但不限于。有些群友想學習編寫游戲外掛但不知道需要具備哪些編程技術和實現原理。

游戲公司為啥這么仇視外掛?nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >

要解決這些問題的先來認識一下游戲外掛,那到底什么是外掛,又該需要哪些基本編程知識呢?

什么是外掛

外掛就是一個另外的輔助程序,它能影響、修改、改變目標程序的運行情況。典型的游戲外掛就是可以加速操作過程,修改游戲屬性值,加快等級提升等等。最開始的外殼來源于單機游戲文件修改,想想當年玩仙劍的時候,先存儲一個游戲進度,再把進度保存的文件用二進制編輯工具打開,查找一下特征值,武力、防御值,然后修改成最大的,再讀入進度,瞬間李逍遙變得強悍無比,妖怪根本無法傷害他。。。當然現在單機版游戲很少了,但有的依然可以采用這種原始辦法來改。現在的網絡游戲基本不能用這種簡單辦法來完成了,因為它的所有數據都存在于服務器端,那么我們還能修改服務器的數據嗎?能,最簡單的辦法就是聯系游戲服務器管理員。。。呵呵開玩笑了!要編寫一般通用的外掛需要一下基本編程技術。

模擬鍵盤和鼠標

很多游戲中需要模擬鍵盤和鼠標,以便完成自動功能,或者加速操作,比如有些游戲,需要鼠標或鍵盤來控制出刀、拳擊速度,要是模擬鼠標按鍵,那當然比手工快幾百倍都不止吧。這項功能本身不難,對系統編程有一定基礎的都能辦到。

游戲公司為啥這么仇視外掛?nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >

截獲消息和快捷鍵

所有的游戲都會有消息響應和快捷鍵,我們常常需要在某個事件的時候去分析他們內存數據,這時候就需要截獲游戲的消息和快捷鍵。比如點擊鼠標本身就會產生一個游戲動作,如果我們要對后面的動作進行修改,那么一定少不了這個攔截,否則怎么去修改數據呢?另外我們的外掛動態庫也需要在特定時候加載進入目標程序,也需要截獲消息和鼠標鍵盤等,windows下常用的鉤子函數往往可以完成這個任務。這個對于windows下編程的人來說也不是難事。

游戲公司為啥這么仇視外掛?nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >

攔截API和網絡數據包

要修改游戲中的數據,對網絡數據包和API的攔截是必不可少的,其實兩個可以合并歸結為攔截API的技術,這個技術廣泛應用在鼠標取詞、實時翻譯等軟件中。API攔截是一個比較高級的技術,他可以完成很多你想象不大的功能,想想你的程序在調用API時,你攔住它并可以任意修改傳入API的參數就知道它的威力有多大了,所以攔截API是外掛程序編寫不可或缺的技術。目前攔截API的方法可以分成三類:第一種是修改API函數在內存映射的開始部分,比如將他的代碼改為jmp到你自己的函數里面,完了在跳轉回來。這種辦法有局限性,需要保持原來的函數機器碼,并且是硬編碼方式,不同版本可能不同。第二種方式修改函數輸入表內存鏡像,使得系統在調用這個函數的時候自動調用你的函數,讓后你自己處理參數后再調用原版的API。這中方法具有通用性,只跟Windows的機制有關,跟版本沒有關系,這是一種推薦的方式。第三種方法是偷梁換柱,直接替換API函數所在的動態庫,自己寫一個dll并把原來API所在的動態庫的所有函數都在你的dll中定義一個,包括參數都完全一樣,然后你在自己的函數中處理完后再調用原版的API,這個需要把原版的動態庫重新命名。這種辦法對一些有簽名的動態庫就無效了,比如要你替換系統的dll,估計會有問題的,一般用于替換第三方的。

內存映射的讀寫

外掛一定少不了對內存數據的讀寫,而且很可能是跨進程的操作,所有你需要Windows虛擬內存方面的知識。當然主要的工作Windows的API都已經幫你做了,這個一定少不了ReadProcessMemory和WriteProcessMemory這種API了,但是你要做的事情還是不少,比如虛擬內存的保護,進程地址搜索等等。這些看起來一句話說完,要去用代碼實現,事情是少不了的。

游戲公司為啥這么仇視外掛?nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >

遠程線程注入

外掛有時候還少不了需要將自己編寫的代碼放到目前程序中運行,這就必須將自己的代碼注入到目標進程中去,達到獲取信息,修改信息的目的。遠程線程注入最常見的方法有兩大類:一種是采用安裝鉤子函數將自己的dll注入到目前進程中。第二種辦法是采用創建遠程線程,讓直接的代碼運行到目標進程中。

了解網絡編程

你需要對網絡編程有所了解,至少你要知道socket相關的基本知識,數據包如何發送和接收,最好能編寫基本的網絡程序收發程序,熟悉這些函數,你才能攔截網絡數據包,否則怎么攔截?上面的API和網絡包攔截都是空話了,這個對很多熟悉網絡編程的人來說都是很簡單的。

游戲公司為啥這么仇視外掛?nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >

Windows編程和系統知識

以上那些看起來可能不難,但是它是建立在你對Windows編程有相當功底的基礎上。比如要是你對PE文件格式不了解,談何完成上面的第二種API方式。要是不了解虛擬內存,怎么完成整個進程地址內去搜索特定內容。所以要編寫Windows下游戲外掛,對Windows的了解是必不可少的,比如如何編寫動態庫,鉤子函數使用,各種常見、關鍵的API函數不但要知道,還有能正確靈活的應用。

具備一定的匯編功底

最后還是少不了匯編的知識,能看懂基本的匯編。對游戲數據的修改,排除少不了調試,而我們并沒有這些源碼,只能用動態調試工具在運行時調試它的匯編代碼,這個跟上一篇破解是一個道理。

需要任性和耐心

外掛同樣是一種需要很大耐心的東西,外掛的程度也不同,可以編寫簡單一點的僅僅改數據,也可以搞成很復雜的,主要就是通過修改關鍵數據欺騙服務器和本地客戶端。跟破解一樣,也不是什么程序都能寫出好的外掛,現在好的游戲都有防止外掛的功能,像傳輸數據加密,程序加殼等等。所以這個就像矛與盾的關系,處于斗爭和反斗爭之中。

如果在學習中遇到困惑可以直接加編程導師微信號coderonline,獲取自學指南.

如果對編程感興趣,想了解更多的編程知識,解決編程問題,以及入門指導,幫你解決編程中遇到的困惑,我們這里有java高手,C++/C高手,windows/Linux高手,android高手,請大家關注微信公眾號:程序員互動聯盟或者coder_online

 
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 吉ICP備11001726號-6
企業800網 · 提供技術支持