太岳四侠
- UID
- 2778923
- 主题
- 47
- 阅读权限
- 40
- 帖子
- 1066
- 精华
- 0
- 积分
- 544
- 金钱
- 6539
- 荣誉
- 1
- 人气
- 9
- 在线时间
- 2886 小时
- 评议
- 0
- 帖子
- 1066
- 精华
- 0
- 积分
- 544
- 金钱
- 6539
- 荣誉
- 1
- 人气
- 9
- 评议
- 0
|
本帖最后由 sendru 于 2012-12-10 13:11 编辑
我理解对于制作组对于游戏开发阶段完整性的, 也不希望游戏制作者和某些希望作弊的玩家把精力放在内耗上.
现在的作弊码其实很有限, 比如说全装备就不能合慕容套, 合慕容套就必须自己正常从游戏中获得的装备合. 每一次期待制作组来修改,我想对于制作组来说也是一种负荷,
对于有作弊需求的玩家是一种折磨,
我建议制作组采用以下密码协议.
1) 对于内存系统,对于程序本身,对于存盘文件维持现状, 老实说, 这个我没有什么好建议. 对于汇编高手来说, 怎么做都是徒劳的. 最多防止小白.
2) 开放初始存档修改,采用明文,也就是~/resource/jshyl_save0.zw,恢复之前的Ranger 格式。为了把作弊以后的开局和正常分割开,在文件尾部增加该文件的hash码,hash 可以采用任何单向函数,比如md5,然后用RSA对于该hash码进行电子签名
2) 程序从初始挡读出后,验证hash,验证hash的电子签名,验证不通过的,打上作弊标志,并且出提示信息,之后存盘保留现有的zw压缩,不再提供修改。
3)初始档有发布者的电子签名,hash函数和公钥系统可以公开。游戏读到修改过的初始档案,给出警告信息,所以不用担心修改以假乱真。
4)程序验证hash签名,采用RSA公钥, 制作组拥有密钥, 所以即便反汇编高手破解程序,也只能拿到程序中的hash函数和公钥(这些根据3,都是公开的),不能破解私钥,伪造签名。(除非量子计算机问世,否则一个2048bit的RSA需要一台台式机 2.2 Ghz AMD , 2GB RAM运行 6.4*10^15年来破解. http://www.digicert.com/TimeTravel/math.htm )
5)对于该系统的唯一攻击在于,反汇编移除代码中判断是否打上作弊标记的代码段,我只能默认为现有的安全性,即 1)是足够的。
hash应该很容易找到接口,自己实现也不是很难。
RSA的c++接口可以参阅
http://www.efgh.com/software/rsa.htm
|
|