BUUCTF-RE-[HDCTF2019]Maze

太难了太难了,这道题是花指令+迷宫逆向,本来以为学了汇编就学会了花指令,没想到nop哪里才是关键
首先查壳,外面一个"UPX"壳,直接去掉,检查里面的函数逻辑,发现不能正常反编译

然后下面还有一大堆数据不知道啥情况,这就是花指令导致的,中间的calljnz均指向了一个无法成功跳转的地址(没有意义的地址),我们尝试将这两个指令nop掉之后,先用U将原函数解定义,然后再用C重新makecode,最后用P进行反编译,于是可以得到正常的main函数内容。此时我们可以看到原来那些乱七八糟的数据也是程序的一部分,只不过没有正确的解读和反编译:

我们看到WASD便可以下意识的想到迷宫逆向(题目名字也有个Maze),我们进一步观察asc_408078dword_40807C可以看到这是起点的初始值(7,0),根据判断条件我们我们需要移动到(5,4)的地方
接下来就是找迷宫在哪里?我们直接到字符串里面去定位到迷宫的内存位置,有70位,猜测是一个7*10的迷宫,我们可以写出迷宫的生成脚本:

c = "*******+********* ******    ****   ******* **F******    **************"
for i in range(len(c)):
    print(c[i],end="")
    if(i%10==9):
        print()


其中+号是起点,F是终点,对着比划,得到最终的步骤是ssaaaasaassdddw

posted @ 2025-02-24 21:40  Ylin07  阅读(79)  评论(0)    收藏  举报