由于Minecraft的自由度,使得玩家能够获取足够数量的随机数迭代数据,并通过密码学分析与逆向分析来深入挖掘游戏中使用的LCG机制,并通过游戏内的事件来操控目标随机数出现在想要的位置。

SEED 对地形种子生成器的攻击

WorldSeed 地形种子在游戏中作为生成地图以及结构等事件时的初始随机变量

通过获取对应的结构进行多次优化筛选最后遍历得到地形种子 涉及方法,对地形生成器的逆向与对搜索算法的优化 应用:

RNG 对游戏中随机数生成器的攻击

世界随机数(World.rand)在游戏中用来控制一些随机事件的产生,例如:打雷,刷怪,时运掉落,生物属性

而产生随机数的rand.nextInt()方法实际上是一个基于LCG(线性同余法) 的伪随机数生成器,因此只要获取了足够的迭代结果,即可通过LCG攻击反推出随机数生成器的SEED,从而预知RAND的随机结果,从而从过控制迭代次数得到目标随机数,即新版(RNGRandom Number Generator)技术的原理

Matthew的Paper: https://docs.google.com/document/d/1stTJAjLmCXtqctdFOpuv4lylegcmfO8mFrptFtwqb78/edit

Matthew的频道: https://www.youtube.com/channel/UCB4XuRBJZBOpnoJSWekMohw/

附魔使用了由seed取高16位得到的单独xpSeed,通过16个等级附魔预览结果即可暴力穷举出XPSEED,即得到SEED的高位部分,通过两次XPSEED结果可穷举出剩下的低16位部分,以知扔物品时玩家SEED会根据特定算法进行迭代,因此得到玩家SEED后即可通过扔物品控制迭代次数产生想要的目标随机数(即控制附魔结果)

Earthcomputer的RNG附魔计算器:https://github.com/Earthcomputer/EnchantmentCracker

通过完整的RNG技术的几乎可以操纵Minecraft中的所有随机事件 如

​ 敌意生物生成 BV1Mp411Z7s9 ( https://youtu.be/GdgnFrZOIX0

​ 铁傀儡生成 BV1Fp411o7Lp ( https://youtu.be/4n4sayGe6ko

​ 闪电生成 BV1bs411H7Bm ( https://youtu.be/CgDD9exV6eI

等等

同时,通用RNG技术以基本原理分为两种,旧版的通过80*80的区块加载来重置随机数种子达到操控随机数的目的,在1.13以后失效,新版的RNG技术则以筛选后穷举出随机数种子为目标,并通过有限次操作来迭代随机数达到操控随机数的目的,适用性更广泛。

其中,RNG技术最耀眼的应用当数在1.8生存获取基岩的技术中控制世界装饰器随机数的应用 EDD证明通过世界装饰机制与活塞机制组合下,理论可在生存中通过建设复杂的机构获取掉落的基岩物品,但由于末地柱子生成位置的随机性,若不能控制或预测末地柱生成的位置,成功几率几乎为零。 而有了RNG技术,通过对随机数的控制,控制了世界装饰器的随机行为,补上了最后的一环,使得不可能变为可能。

原版获取基岩物品 BV13A411h7uy 或 https://youtu.be/tC4YEm6-gmE

基岩物品的获取不是结束,终末只是个开始,玩家对Minecraft机制的挖掘不会终止,不只是对这个自由世界的探索,更是对自身无限可能的发现。

[SB Mojang]

参考: 攻击线性同余生成器(LCG) 随机数控制的探究和破解-异形龙虾