有趣的小游戏
2025年5月13日大约 2 分钟
这么多金币,谁吃得完?我!
经过字符串搜索,以及其他基本操作后,没有发现flag,我们直接开始动态调试
既然是一个小游戏,那么我们直接上cheat engine,查找变化的金币数值
然后找到了对应地址,直接修改1000金币
但是成功后会出现乱码而并非flag,我们先吃几个金币再修改到1000,收集一下出现的乱码
我们可以发现,先吃不同金币数量后修改到1000通关游戏获得的的结果不一样,意味着,可能需要金币从0到1000的过程,也代表着flag被一步步解密的过程,那么,目标明确了我们要从0金币吃到1000金币
我们直接查找哪个汇编代码改写了此处的数值(F6),再吃一个金币可以被监听到,经过尝试可知,不吃金币时并不会检测到对于金币数量的改写
然后我们来到x64dbg对此地址的代码进行进一步调试
发现最顶上有一步je,那么我们反着来,把je改成jne,就会造成跳转条件的相反,也就是说,不需要吃到金币就会使金币数量增加
事实如此,我们可以猜测原逻辑,先判断是否吃掉金币,然后消除P所在的金币,然后再在任意位置生成一个金币,结果就会变成这样
我们现在每移动一步就会使得金币+1,有一个小技巧可以快速增加金币
复制粘贴这样,然后enter会原地移动,并且快速增加金币,增加到900左右可以停下来了,因为金币数最后必须精准处于1000,否则都不会获得flag
接下来需要一点操作才能获得flag,我们先把之前位置修改的jne改为je,也就是改回正常逻辑,接下来我们精准控制金币在1000的时候吃掉E获得flag!