2018/11/29-NCTF-Some Box

题目链接:https://pan.baidu.com/s/1n1a4VFdCkloDV3OBunbKQQ 

提取码:wqs9 

题目是一个推箱子的游戏,需要将两个箱子推到终点。

在sub_400EB9中有一个smc,进行异或操作,作用是解锁地图map。

开始会有”sp-analysis failed“,修一下栈指针可以进行反编译。

写IDApython脚本进行静态解密。

address = 0x6020A0
for i in range(192):
    b = Byte(address+i)^i
    PatchByte(address+i,b)

并且在sub_400796函数中初始化了推箱人和两个箱子的坐标。

解密后的map与person和box坐标如下(08代表墙,00代表通道,14代表终点):

我们来分析一下程序如何实现推箱子游戏的。

输入的字符串可以控制person的移动方向,我们分析一个控制向左移动函数为例。

然后每一次移动后都会跳转到check函数对box1和box2坐标值进行检测,看是否都等于0x14即推到了终点。

现在我们知道了程序如何实现的推箱子,然后只需要先将box1推进左边的14,然后把box2推进右边的14,可以实现这样的输入为”WW44W444W45555555450050W0000WWWWW5444WW00050W4W0000W0550544“。

猜你喜欢

转载自www.cnblogs.com/Fingerprint/p/10041995.html
Box