10/155 浏览综合
开发日志|背包越界:当内存漏洞变成通关工具
按常规,这是一款正常的平台跳跃解谜游戏:
玩家有 2 格背包,捡东西、丢东西,开门、触发机关,一路向前,走过16个16x16的地图,了解16种物品……
但是,我们的背包在内存里的布局是这样的:
[背包1][背包2][Y坐标][X坐标][关卡号]
正常情况下,操作只会影响前两格物品槽。但这里的代码有个bug——背包的读写指针居然可以越界访问后面的内存!于是,原本只能改物品的拾取操作,现在可以直接改你的坐标甚至关卡号!你可以通过捡物品改坐标,瞬移到地图的另一个位置;也可以通过捡物品改关卡号,直接跳到其他关卡。一切看似混乱,其实都有迹可循,只要你掌握内存的编号规则,就能精确控制传送。对玩家来说,这就是一个可以计划、可以滥用的“数组越界”玩法。你既能老老实实一步步通关,也能用越界访问去做意料之外的事情:绕路、偷跑、甚至在关卡之间肆意穿梭!在别的程序里这叫bug,但在我们的游戏里,这叫特性!
然而,在某个隐秘的角落,你还能发现隐藏的第17格,第十七种物品,最终找到通往第17关的可能性!
(图标素材来自网络,仅占位,不代表最终品质)
TapTap
TapTap
TapTap