[請益] 線上排名系統的反作弊機制

看板GameDesign作者 (天真可愛CQD)時間14年前 (2011/05/02 19:59), 編輯推噓7(7043)
留言50則, 9人參與, 最新討論串1/2 (看更多)
這年頭流行什麼東西都要線上排名或是來個成就系統綁帳號 然而伺服器端要怎麼知道接收到的資料真的是透過客戶端程式傳送 而不是某個厲害的 User 假造的資料呢? 我目前是有兩個想法 1. 將資料跟某個密鑰混在一起做 hash ,接收時檢查 hash 是否正確 2. 將資料用 RSA 之類的非對稱加密,到伺服器端才解密 同時配合 user-agent string 檢查之類的輔助手段 前者是客戶端程式得要儲存簽名用的key,感覺不太穩當 後者實作起來(好像)很麻煩,而且我不確定要不要繳保護費給 RSA... 請問有其他穩當的作法嗎? -- 頂天立地:愛孩子就要支持蘿莉控 http://goo.gl/Bha7e -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.73.175.26

05/02 20:15, , 1F
只要客戶端程式在hacker手上,沒有破解不了的程式吧
05/02 20:15, 1F

05/02 20:22, , 2F
直覺是這樣沒錯,但是各遊戲主機的成就系統能夠安然無恙
05/02 20:22, 2F

05/02 20:22, , 3F
應該是有什麼手段可以克服?
05/02 20:22, 3F

05/02 20:25, , 4F
還是說早就倒光光了只是大家不在意這樣[汗]
05/02 20:25, 4F

05/02 20:39, , 5F
讓人想不想去破解的問題
05/02 20:39, 5F

05/02 20:40, , 6F
存replay丟伺服器跑一遍? 除非他能TAS
05/02 20:40, 6F

05/02 20:41, , 7F
有的根本沒防護,直接把資料存在使用者的硬碟中,開個讀
05/02 20:41, 7F

05/02 20:41, , 8F
flash存檔的程式就能修改遊戲記錄了
05/02 20:41, 8F

05/02 20:46, , 9F
唔....我想把討論先專注在資料傳送這一段....當然100%的
05/02 20:46, 9F

05/02 20:47, , 10F
安全是不可能,但是我希望能做到在無視修改記憶體之類的
05/02 20:47, 10F

05/02 20:48, , 11F
手法的前提下,讓 user 沒辦法只「下載修改器填入數字」
05/02 20:48, 11F

05/02 20:49, , 12F
就能修改回傳伺服器的成就/高分...等資料
05/02 20:49, 12F

05/02 21:42, , 13F
存replay在server跑一次 看有沒有異常
05/02 21:42, 13F

05/02 21:57, , 14F
你不是已經把關鍵字講出來了嗎?
05/02 21:57, 14F

05/02 22:02, , 15F
還有程式設計時要有個好習慣 要去檢查自己的程式有沒有
05/02 22:02, 15F

05/02 22:03, , 16F
被修改過 像是動態資源檔之類的
05/02 22:03, 16F

05/02 22:04, , 17F
不過有心要破解的人 給他時間就一定會破解出來
05/02 22:04, 17F

05/02 22:04, , 18F
關鍵字是說....「保護費」嗎[汗]
05/02 22:04, 18F

05/02 22:04, , 19F
不是那三個字啦
05/02 22:04, 19F

05/02 22:05, , 20F
單機遊戲可能比較沒辦法 線上遊戲就是定期更改密碼串
05/02 22:05, 20F

05/02 22:06, , 21F
應該說加密矩陣
05/02 22:06, 21F

05/02 22:06, , 22F
檢查的面向很多 反正短時間內是破解不出來的
05/02 22:06, 22F

05/02 22:07, , 23F
另外關鍵字在你的第二行裡面
05/02 22:07, 23F

05/02 22:09, , 24F
「到伺服器端才解密」?
05/02 22:09, 24F

05/02 22:11, , 25F
那是第六行 XDDDD
05/02 22:11, 25F

05/02 22:14, , 26F
所以問題還是「客戶端」嗎[汗]
05/02 22:14, 26F

05/02 22:21, , 27F
是的 因為基本上程式在別人的電腦上跑 你是不能控制對
05/02 22:21, 27F

05/02 22:22, , 28F
方要對這程式做什麼事情 最多就是做個又臭又長的迷宮
05/02 22:22, 28F

05/02 22:23, , 29F
不然你以為GAMECOPYWORLD裡的東東都哪裡來的?
05/02 22:23, 29F

05/02 23:12, , 30F
用 replay 要看啥東西,純技術性的東西,AI 寫寫
05/02 23:12, 30F

05/02 23:12, , 31F
拿到最高分不是難事
05/02 23:12, 31F

05/02 23:13, , 32F
我覺得replay有一定的安全性,比較大的難點倒是在上傳資料
05/02 23:13, 32F

05/02 23:13, , 33F
另外第一二個方法,只要用原客戶端上傳錯的分數就破解了
05/02 23:13, 33F

05/02 23:13, , 34F
量大以及很花伺服器運算能力...XD
05/02 23:13, 34F

05/02 23:14, , 35F
replay 甚至按鍵精靈就能炸了你 xD
05/02 23:14, 35F

05/02 23:15, , 36F
原客戶端上傳錯的分數...是說修改執行檔/記憶體?
05/02 23:15, 36F

05/02 23:16, , 37F
YEAH
05/02 23:16, 37F

05/02 23:16, , 38F
GameMaster 就可以了連駭客都不用
05/02 23:16, 38F

05/02 23:17, , 39F
我倒是忘了按鍵精靈...不過由於種種因素我暫時不想面對這段
05/02 23:17, 39F

05/02 23:18, , 40F
想先專注在傳送這部份上,雖然遲早還是要面對的 Orz
05/02 23:18, 40F

05/02 23:23, , 41F
基本上 RSA 只能保障誠實的使用者不被第三者影響
05/02 23:23, 41F

05/02 23:23, , 42F
使用者本身就心懷不軌的話是沒用的
05/02 23:23, 42F

05/02 23:25, , 43F
舉例來說,使用者直接用自制程式跟你要密鑰,你要不要給
05/02 23:25, 43F

05/02 23:26, , 44F
他可以偽造所有的封包讓你以為你是在跟自己的程式對話
05/02 23:26, 44F

05/02 23:36, , 45F
如果他可以用按鍵精靈之類的搞你的REPLAY,
05/02 23:36, 45F

05/02 23:36, , 46F
他就可以直接用按鍵精靈玩你的遊戲了
05/02 23:36, 46F

05/02 23:37, , 47F
這問題就變成「如何防止bot」
05/02 23:37, 47F

05/02 23:39, , 48F
遊戲根本用不到RSA吧..
05/02 23:39, 48F

05/04 00:10, , 49F
不是用不到 是大多數公司裡的主管/程式設計根本不懂RSA...
05/04 00:10, 49F

05/04 10:03, , 50F
嗯, 沒修過密碼學的通常不會接觸這東西
05/04 10:03, 50F
文章代碼(AID): #1DlfoVeS (GameDesign)
文章代碼(AID): #1DlfoVeS (GameDesign)