作者Ebergies (火神)
看板GameDesign
标题Re: [请益] 线上排名系统的反作弊机制
时间Mon May 2 23:57:42 2011
※ 引述《GALINE (天真可爱CQD)》之铭言:
: 标题: [请益] 线上排名系统的反作弊机制
: 时间: Mon May 2 19:59:23 2011
: → cowbaying:单机游戏可能比较没办法 线上游戏就是定期更改密码串 05/02 22:05
: → cowbaying:应该说加密矩阵 05/02 22:06
: → cowbaying:检查的面向很多 反正短时间内是破解不出来的 05/02 22:06
: → cowbaying:是的 因为基本上程式在别人的电脑上跑 你是不能控制对 05/02 22:21
: → cowbaying:方要对这程式做什麽事情 最多就是做个又臭又长的迷宫 05/02 22:22
: → GALINE:我倒是忘了按键精灵...不过由於种种因素我暂时不想面对这段 05/02 23:17
: → GALINE:想先专注在传送这部份上,虽然迟早还是要面对的 Orz 05/02 23:18
: 推 Ebergies:基本上 RSA 只能保障诚实的使用者不被第三者影响 05/02 23:23
: → Ebergies:使用者本身就心怀不轨的话是没用的 05/02 23:23
: → Ebergies:举例来说,使用者直接用自制程式跟你要密钥,你要不要给 05/02 23:25
: → Ebergies:他可以伪造所有的封包让你以为你是在跟自己的程式对话 05/02 23:26
都推文了,直接回文给你个建议好了
虽然使用者无论如何都可以破解你的东西
但也别太气馁,还是有方法的
就如同正靠北所说
他要破解,要传假分数就给他传
做个迷宫拖他时间就好了
敝公司刚好有做过类似的事情
大概的重点如下:
1) 伺服器与客户端使用非对称 RSA 加密
1' 这个有点慢,看内容而定,骇客可能使用假讯息取得密钥
2) 因应 1' 客户端会使用一组对称密钥加密所有讯息,伺服器只接受此密钥
2' 骇客可能从档案中取得此密钥
3) 因应 2' 客户端会使用一复杂计算程序将此密钥加密
3' 骇客可能逆向工程取得计算程序
4) 因应 3' 客户端本身会加密,於执行期解密并侦测 break point,anti-dll-hook
检查所有 process 是否存在侦错程序,使用模拟器将计算程序於执行期 interpret
它的意义
4' 无论如何骇客一定会破解并取得计算程序
5) 因应 4' 客户端定时 patch,修改密钥(2),修改计算程序(3),更改程式 interpret
架构,位址,侦测 break point 时机等等(4)
5' 骇客是天才,於 patch 时间内破解计算程序,取得密钥,传送错误分数
6) 因应 5' 取消分数排名系统
6' 骇客: ...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.111.210
1F:推 cowbaying:第六点 XDDDDDD 05/03 00:18
2F:→ snegi:7)要加入线上排名请购买商城道具 可进入排行一个月 05/03 00:24
3F:推 justben:还可以用数位签章阿 05/03 00:52
4F:→ rofellosx:你的公司都在进行骇客活动? 05/03 13:23
5F:推 LaPass:到底是哪个游戏好玩到引起骇客这麽拚的去搞破坏 XD 05/03 16:54
6F:推 hirabbitt:XD 05/03 17:06
7F:→ Ebergies:有时候公司总是会叫你去做一些莫名其妙的事... 不过大陆 05/03 18:10
8F:→ Ebergies:那边倒是真的有专业骇客团体在搞游戏的 05/03 18:10
9F:→ Ebergies:这种问题最好还是从企画面阻止会比较有效 05/03 18:11
10F:→ lulala453:推楼上,编导让排名系统上的名次拿不到任何好处就好了 05/03 21:28
11F:→ lulala453:无法得到任何利益,cracker根本就不想去破解它 05/03 21:29
12F:→ asoedarren:编导...似乎是某公司在用的名词~ 05/03 23:03
13F:→ Splash5:用签证还是有一样的问题 patch检查签证的code就好了 05/04 00:02
14F:→ Splash5:这种东西最後只能靠硬体档 例如检查签证的code在bootrom里 05/04 00:03
15F:→ Splash5:然後cpu一启动就检查bootrom的合法性.. 05/04 00:03
16F:→ Splash5:但在pc上基本上作不到XD 05/04 00:04
17F:→ Splash5:但有心的话还是能从硬体下手 尝试送一些讯号让cpu"秀斗" 05/04 00:05
18F:→ Splash5:跳过检查的部份... 05/04 00:05
19F:→ cowbaying:那样搞太麻烦了 除非是银行的存款数目 我才会想改 05/04 00:07
20F:→ Splash5:总之只要"想"破解应该没有办不到的...XD 05/04 00:08
21F:→ justinlcs:使用RSA或者其他数学加密,就算对方知道你是怎麽加密的 05/05 00:41
22F:→ justinlcs:只要你数值长度够大,而且在传输过程不会过於明显 05/05 00:42
23F:→ justinlcs:解密还是需要不少时间,比如说2-3个月那种 05/05 00:43
24F:推 justben:使用RSA只要长度够,是不能被破解的@@ 05/06 05:57
25F:→ justben:话说,能不能把分数的计算抽离出客户端程式,另设一台主机 05/06 08:21
26F:→ justben:处理,Client端还是照送相关封包过去,然後用实时检查 05/06 08:23
27F:→ justben:如此加密的处理就都在另一台主机,等於多一层防护 05/06 08:24
28F:→ justben:而这个实时检查就是Client跟分数处理主机互送heartbeat 05/06 08:31
29F:→ justben:也就是只要Server,Client,分数计算 有一不合就断开 ?@@ 05/06 08:37