这类游戏安全重要还是中率规范和效率哪个更重要要?

中国领先的IT技术网站
51CTO旗下网站
2.3.6 预测未来:可预知的和随机的,如何在在线扑克中作弊
《网络游戏安全揭密》主要介绍了“游戏是如何被入侵的”、“我们又该如何防范”及“有哪些方法可以找到软件的漏洞”。第2章介绍了基本的游戏分析技术,本节说的是预测未来:可预知的和随机的,如何在在线扑克中作弊。
作者:姚晓光等译来源:机械工业出版社| 16:16
2.3.6 预测未来:可预知的和随机的,如何在在线扑克中作弊
很多游戏都含有偶发性元素,扑克游戏是其中表现得最明显的。问题是,要通过计算机的工作方式创造出不可预测的随机是非常困难的。很多软件安全方面的工作最后都变成了致力于提高随机率(这对密码系统也是很重要的)。
有个很好的例子可以说明在实际中伪随机的数字生成器是如何被破解的。1999年,Cigital的软件安全部门发现了ASF软件有限公司的"德州扑克"游戏在运行中有致命的缺陷。作弊的玩家通过入侵可以实时计算出每个人手中的牌。这就意味着,使用这种入侵方式的玩家知道每个对手中的扑克牌以及桌上的翻牌(即:每一轮加注后放在台面上的翻转过来的牌)。作弊者每次都会知道何时该跟注,何时该弃牌。恶毒的攻击者可以用这种方式诈骗无辜玩家们的真实金钱而不会被抓获。
这个致命的缺陷就在每一局用来生成扑克的洗牌运算规则里。讽刺的是,洗牌的代码就在网络FAQ中公开展示着,用以说明游戏是多么公平,以此吸引玩家(后来该页面被撤销),因此它的代码甚至不需要破解或是猜测。
在代码中,每次扑克生成前都会调用函数randomize(一种Pascal IDE),来为随机数生成器重新生成种子。用Delphi(注:Borland公司推出的RAD开发工具)写出的代码调采用系统时钟自午夜开始累计的毫秒数作为随机数生成器的种子。这就意味着,随机数生成器的输出结果是可以轻易预测的。结果就是,可预测的随机数生成器成为了非常严重的安全问题。
ASF软件使用的洗牌运算规则以固定顺序的扑克牌作为开始,然后生成一系列随机数来对牌进行重新排列。在玩真实的扑克时,扑克会有52!(大约2的226次方)种不同的排列方式。而32位随机数生成器的种子必须是32位数字,也就是说,种子只有大约40多亿种的可能性。因为牌会重新初始化,生成器会在每次洗牌前重新生成种子,根据这种运算规则只能产生40多亿种洗牌顺序,即使种子的数字范围比系统时间要大。但是,40亿种可能的洗牌顺序比起52!实在小得多。
这种具有缺陷的运算规则采用Pascal功能函数randomize()为随机数生成器选择种子。这个randomize()功能选择的种子出自于午夜开始累计的毫秒数。一天仅仅有86,400,000毫秒。因为这个数字要用来作为随机数生成器的种子,那么可能出现的洗牌顺序就减少到了86,400,000种--比40万又少得多。
简言之,这个洗牌运算规则有三个主要问题,任何一个问题都足以摧毁系统。
伪随机的数字生成运算规则采用的种子数字范围太小(32位)。
伪随机的数字生成运算规则未加密。
代码种子的来源随机范围太小(事实上经常会重新播种)
系统时钟种子带给Cigital成员一个新的想法,就是进一步缩小洗牌顺序的可能性。通过让程序和服务器的系统时钟同步来产生伪随机数,他们可以将洗牌顺序的可能性降低到200,000。在这一步迈出之后,系统就已经被破解了,因为要搜索如此少量的洗牌顺序实在是微不足道,一台电脑的CPU即可以实时完成这项工作。
Cigital的工作人员用来攻击程序的工具需要首先知道一副牌里的5张牌是什么。根据已经知道的5张牌,程序搜索出可能出现的几十万种洗牌顺序,推算出哪一种最符合当前情况。在德州扑克的这种情况下,程序首先输入了作弊者手中的两张牌,再加上前三张公共翻牌,在前4轮下注中,程序就知道了5张牌,足以用来确认确切的洗牌顺序(在游戏中过程中实时获得)。
图2-3是入侵工具的软件界面。左上角的参数显示框是用来保持时间同步的。右上方的游戏参数框是用来输入5张牌然后开始搜索的。这里的截图是在程序确认出所有牌之后截下的。作弊者知道谁有什么牌,剩下的翻牌是什么,以及谁最终会赢。
程序一旦知道了5张牌,就会持续生成洗牌顺序,直到找出包含有5张符合顺序的已知牌为止。由于函数randomize()功能是建立在服务器系统时间的基础上,要在一个合理的范围内猜出开始的种子并不是很困难。(你猜的越接近,要搜索的洗牌顺序就越少。)在找到一次正确的种子之后,要让入侵程序和服务器的时间保持一致只需要花上几秒钟。这种"后同步"让程序可以确认出随机数生成器所用的种子,然后只需要一秒钟不到就可以推算出接下来所有游戏的洗牌顺序。
AST扑克软件确实是很容易受到攻击。然而,大部分使用线性序列的伪随机数字生成器(例如rand())都会受到这种攻击。这种攻击归结起来就是,在足够的信息全部泄露之前,攻击者需要多少输出结果。即使你只是在比较小的范围内使用随机数,并且抛弃一部分调用rand()函数的输出结果,但是通常只要几次输出结果就可以把内部状态泄露无遗。
除了扑克还有很多游戏会用到随机。任何一款游戏如果可以完全被预测,那么只需要一个简单的程序就可以推断出接下来会发生的事情。随着越来越多的金钱投入到游戏中,这类随机问题也成为了非法攻击者的印钞机。
【责任编辑: TEL:(010)】&&&&&&
大家都在看猜你喜欢
热点热点头条头条热点
24H热文一周话题本月最赞
讲师:47942人学习过
讲师:228479人学习过
讲师:12601人学习过
精选博文论坛热帖下载排行
本书着重介绍标准C++语言,即1998年由ISO正式推出的关于C++的国际性标准版本。
本书从最基础的编程语言概念讲起,共分6篇24章。前4篇完整...
订阅51CTO邮刊大家都在搜:
扫描二维码安装房天下APP
手机浏览器访问房天下
> > 问题详情
dnf“安全系统启动中”,启动后消失,不出现游戏页面,怎么办?
360流量防火墙里的tensafe已经被关闭,可还是进不去
浏览次数:0
登录失败而已,再开一次就好了,如果显示游戏已运行,就打开任务管理器,把DNFchina.exe关闭即可,的抉择就是重启。不懂的追问我
不知道下面这条知识能否帮助到您
自日起,太原市房管局便开始试运行“太原市存量房买卖网签备案系统”,经调试过后,现已具备正式启动条件。因此,自日起,存量房备案系统在全市六城区范围内正式启用,并开展存量房买卖网签备案工作。
太原存量房网签备案系统启动 具体怎么办?
实木地板要上蜡或油强化的一般不需要做什么
可以,我是专业做房贷的,有需要的可以联系我
227894浏览
手机动态登录
请输入用户名/邮箱/手机号码!
请输入密码!
没有房天下通行证,
ask:3,asku:1,askr:49,askz:18,askd:135,RedisW:1askR:53,askD:1 mz:hit,askU:0,askT:0askA:56
Copyright &
北京拓世宏业科技发展有限公司
Beijing Tuo Shi Hong Ye Science&Technology Development Co.,Ltd 版权所有
违法信息举报邮箱:安全与效率兼备《七杀》正确的回血姿势
&&&&来源:&&&&
&&&&&&字号
原标题:安全与效率兼备《七杀》正确的回血姿势
  在火玩《七杀》游戏里,无论是在外面打怪打boss,还是PK战斗,玩家都需要带上足够的药水,毕竟每个角色的血量再多,也是有限的,总会有掉光的时候。如果此时没有药水能够补充回来,就会死亡,很有可能会爆落身上或者背包里的装备和物品。不过,在回血这件事情上,也有不少东西是要注意一下的。
  1、务必在设置那里调好回血的百分比。在火玩《七杀 》网页游戏里,基本所有人都是使用自动回血功能的,毕竟手动回血效率太低了,也很麻烦。在自动回血的设置上,建议把百分百调高一点,70%-90%都是不错的选择,这样就能保证自身血量一直是充足的状态,不怕突如其来的的猛烈攻击。
  2、背包的空间一定要充足。大家带药水的时候,基本都是带包装的,毕竟这样可以装得更多一点。不过,包装的药水在使用的时候需要先解包成一瓶一瓶的,如果背包空间不够,就解不了,那么就用不了药水了。因此,背包里始终至少要保留6个空格的位置。
  3、尽量不要使用技能回血。很多道士在PK时,为了让回血的速度更快,会自动使用回血技能来加血。其实这是很不好的习惯,因为PK的过程是非常激烈的,双方都没有太多喘息的机会,如果你浪费攻击的机会去回血,很可能在这个空档中敌人就能把你轻松秒杀了,特别在对抗战士时。
  所以说,在火玩《七杀》游戏里,玩家在回血的时候既要保证回血的速度效率,也要保证生命的安全。另外,如果发现药水不够用了,建议还是先回城补充吧。
(责编:范宇航(实习生)、吴佶)
善意回帖,理性发言!
使用其他账号登录:
恭喜你,发表成功!
请牢记你的用户名:,密码:,立即进入修改密码。
s后自动返回
5s后自动返回
恭喜你,发表成功!
5s后自动返回
最新评论热门评论
游戏新闻|精彩博客
24小时排行&|&
人 民 网 版 权 所 有 ,未 经 书 面 授 权 禁 止 使 用
Copyright &
by .cn all rights reserved
人 民 网 版 权 所 有 ,未 经 书 面 授 权 禁 止 使 用
Copyright &
by .cn. all rights reserved}

我要回帖

更多关于 规范和效率那个更重要 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信