如果抽卡游戏用的不是密码学安全的随机数算法(我觉得大部分游戏都不是),是不是有可能从客户端控制服务器的随机抽卡结果?

254 天前
 drymonfidelia
2296 次点击
所在节点    信息安全
24 条回复
tool2dx
254 天前
新游戏不太可能用纯随机的算法,十连抽需要保底,会修改一些策略。
当然也有傻乎乎的老游戏使用可预测的客户端算法,比如猫咪大战争,有粉丝网站预测抽卡下一只是啥猫。
mercury233
254 天前
如果不是杀熟保底算法,而是真正的伪随机,而且产生随机数的方式是仅以当前时间毫秒为种子,那得知抽奖的算法的人就可以知道在哪 1000 毫秒内中奖概率高,哪 1000 毫秒内概率为 0 。所以我印象里一般网游都会采用多个种子,保证实际上的不可预测性。比如给每个账号都设置一个幸运值作为种子,只有脱裤才能获取。
echo1937
254 天前
大部分扣卡游戏就是去服务器拿个结果,客户端本质是个播放器。
seers
254 天前
逆向过某抽卡游戏,在发送抽卡包时候会有个 heat 参数,猜测是控制爆率的
guanzhangzhang
254 天前
结果是服务器返回的,你客户端只有发送一个请求,包含数量啥的,假设你站着不动,有其他玩家从你旁边经过,你有控制行为吗。
游戏客户端是一个收包,一个发包的。发包后,服务器收到处理后吧结果发给客户端,收包的 handler 会收到处理的
drymonfidelia
254 天前
@echo1937
@guanzhangzhang 我知道正常的网络游戏抽卡随机肯定是在服务器服务器上计算,但是非密码学安全的随机数算法计算结果是有可能被预测的。
aloxaf
254 天前
挺难的,不安全的伪随机数生成器最多让你能预测下一个数字。但你不知道服务端具体是怎么使用这个生成器的,更不用说为了减少极端的抽卡体验,不少游戏都不是真正的随机。
Donaldo
254 天前
非密码学安全的随机数算法指的是随机性不够,你能不能控制结果跟随机性够不够有啥关系。
Rickkkkkkk
254 天前
一般为了“尽可能随机”,用的是当前服务器拿到的毫秒数+uid 做种子的,没啥可以钻空子的点。
drymonfidelia
254 天前
@Donaldo 如果是简单用时间做种子的话,随机性不够我只要控制发包时间就能控制抽卡结果了。
另外我想了下个别极端场景的抽卡好像还没办法服务器随机,例如要求极低延迟的打怪爆装备,不能等服务器返回了再显示装备
drymonfidelia
254 天前
@Rickkkkkkk 如果从和游戏服务器相同或地理位置非常接近的机房发请求是否获得比较稳定或在很小范围波动的延迟?我也不确定是否可行
coolfan
254 天前
有个叫作 Minecraft 的游戏,里面的很多机制也和随机数有关系。直到有人发现了游戏中的某些操作可以定量地影响这个随机数:

https://www.bilibili.com/video/BV1np411Z778/

https://www.bilibili.com/video/BV1Fp411o7Lp

https://space.bilibili.com/1311124/search/video?keyword=RNG

Donaldo
254 天前
@drymonfidelia #10 你不仅要控制发包时间,你还要能控制收到包的时间,整个网络链路你都得掌握,这挺难的吧?

另外为什么不能等服务器返回再显示?伤害判定都是服务器做的,这个为什么要求如此低的延迟?
aloxaf
254 天前
看了下前面人说的猫咪大战争,这个游戏就是每个账号初始生成一个种子并且永久不变,而且用的还是非密码学安全的随机算法,而且计算最终抽卡结果用的还是简单的取模,这才被人做到了预测自己的抽卡结果,而且也只是预测,无法控制。

如果想做到控制结果,那必须得有其他方法来影响这个种子,但是这样你能猜到算法的难度就大大增加了。我觉得只有阅读了服务端代码的拉普拉斯抽卡妖能做到。
Donaldo
254 天前
@drymonfidelia #10 另外先不说你能不能控制网络质量,你还得知道这个随机算法是怎么写的,再加上能预测下一个数。有这些前提,你在密码学里差不多算是 Oracle 了。
guanzhangzhang
254 天前
@drymonfidelia #6 只有保底机制,和阶段保底机制
ShadowPower
254 天前
如果只是问有没有可能的话,当然有可能
不过运营商不会担心这个问题。因为要能做到这一点,付出的成本将远远大于直接充钱
xuanbg
253 天前
就算是伪随机,你也要花很高的成本才能掌握规律。对于网络游戏,这种几十万几百万充值的,游戏运营商可以给到的福利不是你能想象的。所以他们根本不在乎你破解,而且欢迎你破解。
guyeu
253 天前
这个取决于具体实现,不过国产卡牌进化到今天,我感觉已经不存在运气成分了,了解过一些游戏抽卡的实现,本质上随机的部分都是洗牌,一定次数内抽到的内容几乎可以说是固定的。
exmario
253 天前
让你写后端程序你会整这么大漏洞吗?那都是钱(点卡)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1105674

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX