网页游戏防外挂策略。
目前市面上的外掛主要就三種模式:1、按鍵模擬掛。2、按鍵封包結合。3、全脫。
一:針對按鍵模擬的。
1、一般按鍵模擬的輔助都是先通過找網頁中的窗口句柄,來給其發送按鍵信息什么的。
對應解決方法:在插入flash的embed或object標簽中加入”wmode”屬性并設置為wmode=“transparent”或”opaque”,
這樣在查找flash中時,會找不到flash的窗口句柄。
2、按鍵一般都是通過找圖,文字來實現接下來需要做什么。
對應解決方法:在設計游戲時,圖片可加些動態效果。
3、做游戲時,盡量不要做成那種無腦流的,尤其是對話框,最好是需要玩家自己去點擊,而不是自動彈出對話框。
?
4、做按鍵的還是有一些高手的,可以在一臺電腦上多開很多個游戲(會做內存優化),這樣打怪打金效率就高了。
對應解決方法:設置flash防多開。(網上有教程,不多說)
(不過對于按鍵研究的不多。上面那些說的也許只是片面的。)
?
二:按鍵封包結合。
1、一般為了快捷什么的。這類輔助都會通過封包買藥,賣裝備什么的。
對應的解決方法:在游戲中加入動態 驗證系統。并對封包信息進行加密。
(如斬仙,他雖然對自己的封包進行4個字節的加密,但是他的加密是固定的,說白了就是用他自己的crc16來進行加密。其實可以通過異或倒推出他的key,這樣他的加密也就沒意義了。同樣的斬龍傳奇,他用的跟斬仙是同一個加密系統,但是他多了個動態驗證,相對于斬仙要做按鍵結合封包的游戲就會很麻煩。因為即使你倒推出key,還涉及一個動態驗證系統,你隨意發包,可以讓他掉線。)
2、對于上述防半封包的方法呢,也有一種對策,就是劫持他的發包,對游戲的發包進行處理,然后再發送出去。
應對方法:對于這種的話,好的技術防范基本沒有。不過游戲開發者可以在封包里下暗樁。這類輔助作者一般不會去研究他所有的發包的,可以在游戲里下個暗樁,來判斷用于是否劫持了發包。
三、全脫;
脫機的流程一般是先通過http獲得游戲登錄的參數,然后按照游戲流程去發包什么的。
1、登錄參數獲得。
一般作者都是 通過post,get來獲得登錄的參數,在這里進行防范的話,可以從cookie著手。普通玩家登錄游戲的話,一般在網頁傳遞過程中,這個cookie數目的比較多的。而這類cookie數量一般就是那些必須的。就如QQ,他在登錄時,一般都會帶上你平常上的QQ,而這種通過post,get的不會發這些。由此來判斷是否是合法登錄。
2、全脫顧名思義,就是不借助于客戶端,自己構建客戶端利用協議跟官服交互。也就是說他在運行時是不需要加載資源的。那么開發者可以從資源這塊著手。下個暗樁,某個資源會記錄玩家的ip,玩家id的,服務器根據他來判斷玩家是否在線。不在線,還在哪邊發包,看作外掛處理。(后續處理自己看著辦,直接掉線,告訴外掛作者你有暗樁,不掉線,過個1、2天,封號,哈哈。)
3、對于全脫,作者最煩的就在于那個參數的算法那,參數最好要經過多次計算,增加復雜度,不要弄一些固定的值,這樣對脫機輔助作者來說,他就是做了個復制,粘貼的事情。
4、在發包中,一些重要包的信息最好帶上玩家ID,時間和綜合后的一些加密等。
?
?
適合于所有。頁游之所有輔助比端游 要多,原因就在于頁游可以很容易的得到源碼。
所以呢,頁游公司應該在保護源碼這塊入手防外掛。
源碼的保護呢,一般3種,加殼,混淆,加擾碼。
1、加殼
這個最沒用,因為flash的運行機制里,都要先把他轉成FWS,來進行加載,所以一般有能耐的,直接可通過內存拿到脫殼后的swf,像doswf那些,都是可以搞定的。不要覺得內存發行,只是水平不夠而已。
2、混淆
這個就不錯了。尤其是對于一些參數名稱的混淆,這個更有效果,讓作者即使解出了這個包,也不曉得這個包的意思,猜不透。不過混淆的話,還是可以去混淆的,只是看起來較麻煩點。解包還是能解,只是增加復雜度。
3、加擾碼
這個最好,一般做脫機輔助的,雖然可能是高手,但也只是在一方面把,對于flash的反編譯,肯定還是借助于工具的asv,碩思什么的。而如果你在swf加入大量的擾碼的話,對游戲運行沒多少影響,但是會直接讓asv,碩思死掉。這樣,即使他得到了脫殼后的swf,也弄不到源碼,也就做不了輔助了。
個人意見。其實做到這里還是不夠的,因為我通過虛擬機可以實現替換swf,讓你官方的swf加載我的swf,從而我可以對你的游戲進行控制。應對方法,對每個swf來個長度檢測啊什么的,來識別是否是你自己的swf。
?
這是在下的一點點見解。高手勿笑。
轉載于:https://www.cnblogs.com/as3dashu/p/4166919.html
總結
以上是生活随笔為你收集整理的网页游戏防外挂策略。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的计算机c盘计划,我的电脑C盘空间不够
- 下一篇: iOS load和initialize方