資源描述:
《傳奇脫機回收元寶掛.docx》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、自從網絡游戲誕生以來外掛就一直是網絡游戲廠商頭痛的問題。木劍相逢便捷功能之一就是遠程倉庫,不管你F里面有沒有在線倉庫,使用木劍相逢都可以進行遠程快速的存取倉庫的裝備。由于網絡游戲服務器端的負荷很重,不能進行太多計算,只能把大量檢測外掛的工作放在網絡游戲的客戶端進行。但是外掛也總是可以進行針對性的修改,使這些檢測失效。而且從某種意義上說,外掛使這些檢測失效比游戲檢測這些外掛更容易。從目前的情況來看,在這場較量中似乎也是外掛占了上風。在這種情況下游戲廠商不得不使用封號的辦法阻止玩家作弊,但是這又會造成玩家流失。有沒有一種能
2、有很好的反外掛效果,而外掛又無法使這些檢測失效的反外掛方法方案?這就是本方案所能做到的。首先介紹一下本方案的基本原理一個網絡游戲客戶端在運行時,從本質上說是一個從服務器接收數據,網絡游戲客戶端根據這些數據,加上用戶鼠標鍵盤的輸入,計算出向服務器發(fā)送的數據,并把這些數據發(fā)送給服務器的過程。記錄下一個客戶端從服務器接收到的數據、用戶鼠標鍵盤的輸入,以及這些數據在客戶端上被處理的時間,就能計算出這個客戶端應向服務器發(fā)送的數據。在用戶沒有作弊的情況下,即使在不同的客戶端重新計算,也仍然能得到相同的結果。quake(雷神之錘)、
3、星際爭霸、cs(反恐精英)等游戲的錄像功能使用的就是本原理。因此我們只要比較兩個客戶端計算的結果,如果不相同,就能知道其中有客戶端作弊了。??由于被檢驗的客戶端和檢驗它的客戶端都有可能作弊,例如檢驗它的客戶端有可能謊報被檢驗客戶端作弊,也可能謊報被檢驗客戶端沒作弊,因此兩端的作弊都必須防止。我們先來看一下具體怎么做。??一個網絡游戲客戶端連接服務器時,同時也連接另外兩個用于對它進行驗證的游戲客戶端。在服務器傳送給客戶端的數據中含有從服務器上發(fā)出的時間。客戶端把它從服務器上接收到的數據D1、該客戶端上鼠標鍵盤的數據D2,
4、以及這些數據在客戶端上被處理的時間D3、D4傳送給兩個用于驗證的游戲客戶端。為保證這些數據不被修改,在傳送給驗證客戶端前,D1、D2、D3、D4使用RSA算法加密。驗證客戶端根據D1、D2、D3、D4計算出被驗證客戶端應向服務器發(fā)送的數據D5和D5的CRC校驗D6,把D6傳送給服務器。為防止被驗證客戶端在把D1傳送給驗證客戶端前修改D1的數據,驗證客戶端也要把D1的CRC校驗D7傳送給服務器。服務器計算被驗證客戶端發(fā)送給它的的數據D8的CRC校驗D9,以及D1的CRC校驗D10。比較D9、D6、D10、D7,如果不相同
5、,就可以知道有客戶端作弊了。下面來看看上面的方案在各種情況下是如何檢測出哪個客戶端在作弊的。??假設被驗證客戶端在把D1傳送給驗證客戶端前修改D1,服務器只需比較D10、D7就能知道被驗證客戶端是否修改了D1。??假設驗證客戶端謊報D1被修改,在驗證客戶端向服務器報告此問題時,服務器將要求驗證客戶端把D1傳送給服務器。由于D1使用RSA算法加密,驗證客戶端根本無法修改它,因此驗證客戶端是無法謊報D1被修改的。對于驗證客戶端謊報D2、D3、D4被修改的情況也與此類似。??假設被驗證客戶端使用加速外掛,由于D1中含有服務器
6、發(fā)送它的時間,這個時間減D3或D4后的值D11應該是一個恒定值。如果這個值變化超過一定范圍,例如兩秒,就可以知道被驗證客戶端作弊了。??假設被驗證客戶端使用修改封包、內存、脫機等外掛,D9、D6必定不相同,所以只需比較D9、D6就能知道有客戶端作弊。??在發(fā)現有客戶端作弊后,服務器將要求驗證客戶端把D1、D2、D3、D4發(fā)送給服務器,由服務器計算被驗證客戶端應向服務器發(fā)送的數據D13。比較D8、D13,如果不相同,就能知道是被驗證客戶端作弊。比較D5、D13,如果不相同,就能知道是驗證客戶端作弊。??假設被驗證客戶端為
7、了逃避驗證,不把驗證數據發(fā)送給驗證客戶端。對于這種情況,如果兩個驗證客戶端在一段時間內都沒有收到驗證數據,服務器可以斷開被驗證客戶端的連接。??假如被驗證客戶端因為驗證客戶端下線等原因和驗證客戶端斷開了連接怎么辦?只要另一個驗證客戶端還能收到驗證數據,就不會有什么影響。如果網絡帶寬允許,甚至可以考慮連接三個驗證客戶端。這樣即使有兩個驗證客戶端謊報收不到數據,仍然不會對被驗證客戶端產生影響。在驗證客戶端和被驗證客戶端連接斷開的情況下,我們需要讓被驗證客戶端重新連接一個驗證客戶端。??應該如何重新連接一個驗證客戶端呢?對此
8、需要每過一定時間,例如10秒,保存一次被驗證客戶端的狀態(tài)。在驗證客戶端和被驗證客戶端連接斷開時,被驗證客戶端連接一臺新的驗證客戶端,把此狀態(tài)傳送給新的驗證客戶端。新的驗證客戶端根據此狀態(tài),再加上被驗證客戶端傳送給它的D1、D2、D3、D4就能繼續(xù)計算D5,從而繼續(xù)對被驗證客戶端進行驗證。如果被驗證客戶端和兩個驗證客戶端的連接都中斷