码迷,mamicode.com
首页 > 其他好文 > 详细

2018/11/06-SCUCTF-re4

时间:2018-12-06 14:15:20      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:比较   提示   osi   提取   调试器   alt   失败   分享   http   

题目链接:https://pan.baidu.com/s/1Q7MmJjff_3xMs2OvKbUdsw
提取码:t7jr 

首先程序用了重定位,od和ida里面的地址不一样,我们用修改PE文件的Option Header中的Dll Characteristics,把这个的数据置为0,然后载入到调试器中之后就首地址就会和IDA中一样。

技术分享图片

 

这是一个迷宫题,不过没有提示的话光看算法不太容易看出来,地图也被稍微隐藏了一下。

技术分享图片

点进check函数分析一下。

技术分享图片

其实我们看到这里就应该猜到是迷宫了,v11到v14的比较是四个方向,四个函数会对position进行处理改变坐标,&unk_42B9C0就是地图。

技术分享图片

方向的值是rand()生成的,用od动态调一下可以得到。

点进去一个方向中的处理函数分析一下。

技术分享图片

可以看到先进行坐标变化,若下一个要移动的位置不是‘ . ’说明撞墙了,返回-1,游戏失败。

注意到是map+4*v2,说明在内存中的一堆数据中每四位的第一位才是地图的物品,看一下内存发现78(‘ x ’)是墙,2E(‘ . ’)是通道。

技术分享图片

我们把map所有数据dump下来,然后写脚本生成地图即可。

data = open(E://data,rb).read()
for i in range(0,2495,4):
    if(i%(48*4) == 0):
        print(\n)
    print(chr(data[i]),end="")

可以生成地图。

技术分享图片

从左下角走到右上角即可,程序的输入即是每一步的方向。

题目比较恶心,要走78步,由于是练习题,就不走了。

 

2018/11/06-SCUCTF-re4

标签:比较   提示   osi   提取   调试器   alt   失败   分享   http   

原文地址:https://www.cnblogs.com/Fingerprint/p/10075879.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!