硬核科普:外掛為何屢禁不止?

外掛的製作和使用:屬於破壞計算機信息系統罪,違反國家規定,對計算機信息系統功能進行刪除、修改、增加、干擾,造成計算機信息系統不能正常運行,後果嚴重的,處五年以下有期徒刑或者拘役;後果特別嚴重的,處五年以上有期徒刑。

外掛,一個招人恨的存在;外掛,一個破壞了眾多人遊戲體驗的存在;外掛,一個讓開發者使出渾身招數卻也無能為力的存在。外掛,就像是一個自古存在的東西,就像是有白必有黑,有陰必有陽,而無法磨滅的存在。

硬核科普:外掛為何屢禁不止?

程序工作原理

為何外掛如此的難以對付,為何外掛可以輕而易舉的泛濫,為何外掛可以在短短數小時內就為一個遊戲開發好,我們下面就來好好聊聊。

在開始聊外掛之前,我們先科普一些計算機方面的知識,只有做到知己知彼才能百戰不殆。如果你學過相關的編程知識、編譯原理、計算機系統或彙編知識的話,可以酌情跳過本段內容。

硬核科普:外掛為何屢禁不止?

眾所周知,一個遊戲都是由一行行代碼所實現的,不管你用腳本語言也好,還是用C/C++語言也罷,你永遠都無法不給你的遊戲設計很多參數,而這些參數在編程的世界裡我們稱為“變量”。

硬核科普:外掛為何屢禁不止?

而“變量”則會有靜態變量和動態變量之分,顧名思義,靜態變量就是靜止的,它這個變量一直存在,而動態的就是會用的時候再創建,不用的時候則銷燬。放在內存上就是,靜態變量從你打開程序到關閉,它都在那個內存上的位置,而動態的則是在創建的時候出現在內存上的一個位置,不用的時候則銷燬。

硬核科普:外掛為何屢禁不止?

既然都是一些基礎參數了,那麼這些參數多半是用靜態變量存儲的,那麼就意味著,這些變量是在一開始就放入內存的。而且,程序也不是什麼玄學,執行的話也都是一行行執行的,我們結合上一些編譯的原理,這裡就會有這麼一個結論:

所有在寫程序時候定義好的變量將會按照一定的固定順序在打開程序的時候創建。

硬核科普:外掛為何屢禁不止?

如果你用過CE,如果你仔細觀察每次你要修改的變量之間的地址中間的差的時候你會發現其實每次都是一樣的,如果你還學過彙編你就會明白,其實“變量”是按照固定的順序存儲在一個獨立的數據棧中。

硬核科普:外掛為何屢禁不止?

其實,這裡我們就解開了外掛的一層面紗,為什麼外掛能一直用。因為裡邊的變量的地址的相對位置都是不變的,只要我知道了後坐力的數據存在了哪裡,那不管每次打開程序的時候系統從哪個內存的位置分配一段空間給程序,外掛都能直接找到這個變量的位置,然後修改它。

硬核科普:外掛為何屢禁不止?

如果上邊的話你沒有看懂也沒事兒,這裡我們舉一個生活中的例子,看完後相信你很快就能夠理解了。

相信大家上學的時候都讀過課文,我們可以做個這樣的類比:我們讀的這篇課文就是一個程序,而我們教室裡的每個人則是一個個內存空間。那麼好了,課文的內容是不會變的,上頭每一個字都是一個靜態變量,因為他在印書的時候就已經固定好了位置。

硬核科普:外掛為何屢禁不止?

那麼這個時候誰讀課文都是一樣的,而且我們也知道書上的文字是按照什麼格式印刷的,比如第一句“今天天氣很好”,而這裡的 “好”如果是一個“參數”的話,要是我想要更改,那麼別人讀完了,我再讀一遍的時候,我就可以改成“今天天氣很壞”。

硬核科普:外掛為何屢禁不止?

這樣,這個“參數”是不是就被更改了,而事實上外掛基本的工作原理也是這樣的,要不就是獲取指定的變量做修改,要不就是獲取變量做運算然後顯示出來,用作別的用處。

硬核科普:外掛為何屢禁不止?

這就是外掛

一旦開發者設計的參數被修改了,那麼運算的結果也就發生了改變,比如後坐力被改成了0,那麼執行後坐力的代碼將後坐力的數值讀入進來後,零乘以任何數都為零,那麼無後座的現象就隨之出現了。

硬核科普:外掛為何屢禁不止?

說到這裡,我想很多人應該明白這其中的道理了,那麼可能有人會問,既然這樣,那麼開發者也可以像做外掛一樣通過外部程序盯住這些參數,如果有人修改的話,那麼就可以證實是外掛了。

硬核科普:外掛為何屢禁不止?

這確實是個好想法,先不說可不可行,但要明白,世界上沒有絕對的安全,所謂道高一尺魔高一丈,你封禁了一種辦法,那他們還有別的方法可以實現外掛。這就是一場矛與盾是戰爭,你把一個“弱點”封住了,那麼他們會去尋找另一個“弱點”。

硬核科普:外掛為何屢禁不止?

這些“弱點”可能來自於軟件本身,也可能來自於系統的設計甚至也有可能是出自硬件邏輯。總之,你無法完全的防住他們,不管是什麼遊戲,就算是最冷門的戰略類遊戲都有掛,就更別提火爆的吃雞或是別的。

硬核科普:外掛為何屢禁不止?

而且,這些外掛並不僅僅針對一款遊戲,一個引擎,基本上所有的遊戲引擎開發的遊戲都有外掛,而且外掛實現的種類也是五花八門,所以現有的反外掛手段更多的是減少這類現象,如果想要杜絕的話,也許只能在完全雲端處理——玩家只能獲得雲端傳來的畫面並通過外設進行操作的時代來幾乎杜絕了。

硬核科普:外掛為何屢禁不止?

我為什麼說幾乎杜絕呢?因為,有一種外掛很噁心,那就是宏,像我說的,就算僅僅外設控制遊戲的操作在本地剩下的運算都在雲端運行的時候,宏,這種外掛因為是依託於外設設備,就算脫離了遊戲也可以自己運行,所以,你懂得。

硬核科普:外掛為何屢禁不止?

這就是一場曠日持久的戰爭,來自多方的博弈。而顯而易見的是,這場戰爭將永遠不會有結果,最終苦了的也只是想好好玩遊戲的玩家。

硬核科普:外掛為何屢禁不止?


分享到:


相關文章: