作者GALINE (天真可爱CQD)
看板GameDesign
标题[请益] 线上排名系统的反作弊机制
时间Mon May 2 19:59:23 2011
这年头流行什麽东西都要线上排名或是来个成就系统绑帐号
然而伺服器端要怎麽知道接收到的资料真的是透过客户端程式传送
而不是某个厉害的 User 假造的资料呢?
我目前是有两个想法
1. 将资料跟某个密钥混在一起做 hash ,接收时检查 hash 是否正确
2. 将资料用 RSA 之类的非对称加密,到伺服器端才解密
同时配合 user-agent string 检查之类的辅助手段
前者是客户端程式得要储存签名用的key,感觉不太稳当
後者实作起来(好像)很麻烦,而且我不确定要不要缴保护费给 RSA...
请问有其他稳当的作法吗?
--
顶天立地:爱孩子就要支持萝莉控
http://goo.gl/Bha7e
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.73.175.26
1F:→ Dannvix:只要客户端程式在hacker手上,没有破解不了的程式吧 05/02 20:15
2F:→ GALINE:直觉是这样没错,但是各游戏主机的成就系统能够安然无恙 05/02 20:22
3F:→ GALINE:应该是有什麽手段可以克服? 05/02 20:22
4F:→ GALINE:还是说早就倒光光了只是大家不在意这样[汗] 05/02 20:25
5F:推 LaPass:让人想不想去破解的问题 05/02 20:39
6F:→ azureblaze:存replay丢伺服器跑一遍? 除非他能TAS 05/02 20:40
7F:→ LaPass:有的根本没防护,直接把资料存在使用者的硬碟中,开个读 05/02 20:41
8F:→ LaPass:flash存档的程式就能修改游戏记录了 05/02 20:41
9F:→ GALINE:唔....我想把讨论先专注在资料传送这一段....当然100%的 05/02 20:46
10F:→ GALINE:安全是不可能,但是我希望能做到在无视修改记忆体之类的 05/02 20:47
11F:→ GALINE:手法的前提下,让 user 没办法只「下载修改器填入数字」 05/02 20:48
12F:→ GALINE:就能修改回传伺服器的成就/高分...等资料 05/02 20:49
13F:推 StubbornLin:存replay在server跑一次 看有没有异常 05/02 21:42
14F:→ cowbaying:你不是已经把关键字讲出来了吗? 05/02 21:57
15F:推 cowbaying:还有程式设计时要有个好习惯 要去检查自己的程式有没有 05/02 22:02
16F:→ cowbaying:被修改过 像是动态资源档之类的 05/02 22:03
17F:→ cowbaying:不过有心要破解的人 给他时间就一定会破解出来 05/02 22:04
18F:→ GALINE:关键字是说....「保护费」吗[汗] 05/02 22:04
19F:→ cowbaying:不是那三个字啦 05/02 22:04
20F:→ cowbaying:单机游戏可能比较没办法 线上游戏就是定期更改密码串 05/02 22:05
21F:→ cowbaying:应该说加密矩阵 05/02 22:06
22F:→ cowbaying:检查的面向很多 反正短时间内是破解不出来的 05/02 22:06
23F:→ cowbaying:另外关键字在你的第二行里面 05/02 22:07
24F:→ GALINE:「到伺服器端才解密」? 05/02 22:09
25F:→ cowbaying:那是第六行 XDDDD 05/02 22:11
26F:→ GALINE:所以问题还是「客户端」吗[汗] 05/02 22:14
27F:→ cowbaying:是的 因为基本上程式在别人的电脑上跑 你是不能控制对 05/02 22:21
28F:→ cowbaying:方要对这程式做什麽事情 最多就是做个又臭又长的迷宫 05/02 22:22
29F:→ cowbaying:不然你以为GAMECOPYWORLD里的东东都哪里来的? 05/02 22:23
30F:推 Ebergies:用 replay 要看啥东西,纯技术性的东西,AI 写写 05/02 23:12
31F:→ Ebergies:拿到最高分不是难事 05/02 23:12
32F:→ GALINE:我觉得replay有一定的安全性,比较大的难点倒是在上传资料 05/02 23:13
33F:→ Ebergies:另外第一二个方法,只要用原客户端上传错的分数就破解了 05/02 23:13
34F:→ GALINE:量大以及很花伺服器运算能力...XD 05/02 23:13
35F:→ Ebergies:replay 甚至按键精灵就能炸了你 xD 05/02 23:14
36F:→ GALINE:原客户端上传错的分数...是说修改执行档/记忆体? 05/02 23:15
37F:→ Ebergies:YEAH 05/02 23:16
38F:→ Ebergies:GameMaster 就可以了连骇客都不用 05/02 23:16
39F:→ GALINE:我倒是忘了按键精灵...不过由於种种因素我暂时不想面对这段 05/02 23:17
40F:→ GALINE:想先专注在传送这部份上,虽然迟早还是要面对的 Orz 05/02 23:18
41F:推 Ebergies:基本上 RSA 只能保障诚实的使用者不被第三者影响 05/02 23:23
42F:→ Ebergies:使用者本身就心怀不轨的话是没用的 05/02 23:23
43F:→ Ebergies:举例来说,使用者直接用自制程式跟你要密钥,你要不要给 05/02 23:25
44F:→ Ebergies:他可以伪造所有的封包让你以为你是在跟自己的程式对话 05/02 23:26
45F:推 azureblaze:如果他可以用按键精灵之类的搞你的REPLAY, 05/02 23:36
46F:→ azureblaze:他就可以直接用按键精灵玩你的游戏了 05/02 23:36
47F:→ azureblaze:这问题就变成「如何防止bot」 05/02 23:37
48F:→ rofellosx:游戏根本用不到RSA吧.. 05/02 23:39
49F:→ Splash5:不是用不到 是大多数公司里的主管/程式设计根本不懂RSA... 05/04 00:10
50F:推 Ebergies:嗯, 没修过密码学的通常不会接触这东西 05/04 10:03