目录

re-二维四向迷宫题

re-二维四向迷宫题

关于迷宫

我们结合具体的来进行描述。

迷宫,顾名思义是有墙,且只有一条路可以走下去。当我们在题目中获得了map(地图)就拥有了上帝视角,就可以顺利的走出迷宫。

在下面这个图就是一个迷宫的map,其中A是起点,B是终点,1代表墙,0代表通路(可以行走的区域)

https://i-blog.csdnimg.cn/direct/71fd03bac9cd4053a346529bb89e82c0.png 这仅仅只是一个88的地图,可以直接解决找到路径,但是如果遇到3030或者更大的地图该如何办?

迷宫的解决不可能完全依靠我们人力去走通,而要尽力依靠脚本。

写脚本之前我们得先了解一下在这个迷宫题里的上下左右的方向分别是什么

eg.大部分游戏中的上下左右就是WSAD

通常这个走的路径就是我们需要的关键信息(甚至可能就是flag)

比如在这个地图里我们的关键信息就是SDSDDSDSSD(假设方向同上)

而写脚本的好处就是不那么废眼睛,要不一旦遇到稍大的地图将会累眼睛也废精力且费时。

解题

有了部分关于迷宫的知识后,我们去学习一下如何解决,这里与实题结合

得到附件确定了是多少位的文件以及有无壳后(有壳得脱壳)用ida打开看

提取迷宫地图

进入后,shift+f12查看字符获得地图的位置,然后双击其中一行去到IDA View-A中进行提取数据

第一种类型(字符型地图)

如果是字符型的map就选中地图后按shift+e进行提取数据。这个除了提取数据,提取后还得辨别那个字符代表路径,哪个字符代表墙

f1

如果可以直接获取字符就选择string literal但是 https://i-blog.csdnimg.cn/direct/64e06d04490a4269934c1403c7a59a2c.png

f2

但是可能提取不了所有的,比如这个地图,那就选择另一个C unsigned char array(hex),也就是将字符转为十六进制进行全部提取,然后再写脚本转换为地图 https://i-blog.csdnimg.cn/direct/2f23a996108f484087f789493c33f7c1.png

land=[0x41, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 
  0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 
  0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x2E, 0x00, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x00, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x00, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x00, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x00, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x00, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x00, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x2E, 0x24, 0x24, 0x2E, 0x2E, 
  0x00, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x2E, 0x00, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x2E, 0x00, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x00, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x00, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x00, 0x2E, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x2E, 0x00, 0x2E, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x24, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x2E, 0x00, 0x2E, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x2E, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x00, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 
  0x2E, 0x2E, 0x2E, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
  0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x2E, 0x42, 0x00]
print(len(land))
map=''

for i in range(1830):
    if land[i]==0x41:
        map+='A'
        print('A',end='')
    elif land[i]!=0x24 & land[i]!=0x2E & land[i]!=0x00:
        map+=chr(land[i])
        print(chr(land[i]),end='')
    elif land[i]==0x24:
        map+='1'
        print('1',end='')
    elif land[i]==0x2E:
        map+='25开学考迷宫.py'
        print(0,end='')
    else:
        map+='\n'
        print('\n')
print(map)

https://i-blog.csdnimg.cn/direct/9f28ec118591483d9fa2a0052bc57b6e.png 这里为了方便观看,我将0改为了“.(点)”,更便于分辨路径和墙

第二种类型(数字型地图)

数字型地图也就是我们最初提到的0和1组成的地图

https://i-blog.csdnimg.cn/direct/5e1da1e31eb340e29403010f73e139a1.png

处理好了地图,我们就得看看原文件的关键函数,找到各方向的输入字符

寻找关键函数

一个小tip,就是也用shift+f12去查看字符,看到中文或者类似意思的英文去定位回其地址,然后就得到了关键函数 https://i-blog.csdnimg.cn/direct/f99ede3ef3c5407a93a9daf1f5db4c21.png 比如这里双击后可以回到汇编语言的界面 https://i-blog.csdnimg.cn/direct/4dd8efb10f7c4b60a14fa1a57f6254c9.png 这里双击其函数名,就又到了思维导图似的页面 https://i-blog.csdnimg.cn/direct/bbd5ad19c0ab422eb8ccf9f0e505f34d.png

__int64 sub_140011980()
{
  char *v0; // rdi
  __int64 i; // rcx
  char v3[32]; // [rsp+0h] [rbp-20h] BYREF
  char v4; // [rsp+20h] [rbp+0h] BYREF
  int v5; // [rsp+24h] [rbp+4h]
  int v6; // [rsp+44h] [rbp+24h]
  int v7; // [rsp+64h] [rbp+44h]
  int v8; // [rsp+84h] [rbp+64h]
  unsigned int v9; // [rsp+A4h] [rbp+84h]
  unsigned int v10; // [rsp+C4h] [rbp+A4h]
  char v11[32]; // [rsp+E4h] [rbp+C4h] BYREF
  unsigned int v12; // [rsp+104h] [rbp+E4h]
  unsigned int v13; // [rsp+124h] [rbp+104h]
  char v14; // [rsp+1F4h] [rbp+1D4h]

  v0 = &v4;
  for ( i = 74i64; i; --i )
  {
    *(_DWORD *)v0 = -858993460;
    v0 += 4;
  }
  sub_14001137A(&unk_14002400E);
  v5 = 0;
  v6 = 0;
  v7 = 59;
  v8 = 29;
  v9 = 0;
  v10 = 0;
  sub_14001119A(byte_14001AD30);
  do
  {
    while ( 1 )
    {
      while ( 1 )
      {
        sub_14001119A("请输入移动指令 > ");
        sub_140011203(" %c", v11);
        v12 = v9;
        v13 = v10;
        v14 = v11[0];
        if ( v11[0] == 67 )
        {
          --v12;
          goto LABEL_14;
        }
        if ( v14 == 88 )
        {
          ++v13;
          goto LABEL_14;
        }
        if ( v14 == 89 )
          break;
        if ( v14 == 90 )
        {
          ++v12;
          goto LABEL_14;
        }
        sub_14001119A(asc_14001ADE0);
      }
      --v13;
LABEL_14:
      if ( v12 <= 0x3C && v13 < 0x1F )
        break;
      v9 = 0;
      v10 = 0;
      sub_14001119A(asc_14001AE08);
    }
    if ( aA[61 * v13 + v12] == 36 )
    {
      v9 = 0;
      v10 = 0;
      sub_14001119A(asc_14001AE38);
    }
    else
    {
      v9 = v12;
      v10 = v13;
      sub_14001119A("你移动到了 (%d, %d)\n", v12, v13);
    }
  }
  while ( v9 != 59 || v10 != 29 );
  sub_14001119A(asc_14001AE90);
  sub_140011316(v3, &unk_14001AD00);
  return 0i64;
}

ai分析得到方向 https://i-blog.csdnimg.cn/direct/5c7e48845fac480992f2bcc2ae9a5c09.png

此段代码看到下方有一个“v9 != 59 || v10 != 29”,这就说明了我们的地图大小为60*30

路径解决

深度优先搜索

什么是DFS

深度优先搜索,即DFS,一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。

一个形象的演示 https://i-blog.csdnimg.cn/direct/01b02d8e14bc447ab9a1a2fe30333c97.gif 深度优先搜索一般是通过递归来实现的,“递”的过程就是往下搜的过程对应着深度,“归”的过程就是回溯,回退上一级

基本思路(特点)
  1. 不论道路通或不通以及通向何处,都是一直朝一个方向往深处探索的,直到撞墙
  2. 遇到墙后才往回走,且只回溯到上一个节点,然后选择其他的方向行进
  3. 从出发点一直深入,遇墙回溯,直到到达终点结束

宽度优先搜索

什么是BFS

宽度优先搜索,即BFS。C++中的 (Breadth-First Search,BFS)是一种图遍历算法,它从图中的一个特定顶点开始,按照“广度”优先的顺序逐层遍历图中的节点。该算法通常用于寻找最短路径、图的连通性以及状态空间搜索等领域。

所谓广度,就是一层一层的,向下遍历,层层堵截。

详细来讲:从初始节点开始,应用算符生成第一层节点,检查目标节点是否在这些后继节点中,若没有,再用产生式规则将所有第一层的节点逐一扩展,得到第二层节点,并逐一检查第二层节点中是否包含目标节点。若没有,再用算符逐一扩展第二层所有结点……,如此依次扩展,直到发现目标结点为止 。

基本思路(特点)
  1. 一层一层的遍历,按层遍历,同层的都试完后进入下一层
  2. 所有点分为已访问的点和未访问的点,已访问的不会再次访问
  3. 一旦找到终点立刻结束,这样就能实现最短路径

对于BFS和DFS比较形象的一个比较 https://i-blog.csdnimg.cn/direct/5c9faebb420048c2bbed0a870b5df4b5.jpeg

上面的那个例子需要的是最短路径,所以采用BFS

写脚本


maze=[['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1'],['1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1'],['1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1'],['1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'],['1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '0', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '0', '1', '1', '0', '0'],['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '0', '1', '1', '1', '0'],['1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '0', '1', '1', '1', '0'],['0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0'],['0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0'],['0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0'],['0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0'],['0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '1', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '0'],['0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0'],['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0']]
from collections import deque #使用 deque(双端队列)来实现广度优先搜索(BFS)。deque 提供了高效的队列操作,支持从头部和尾部快速添加和删除元素。


def bfs(maze, start, end):  #定义bfs函数
    rows, cols = len(maze), len(maze[0])  #从maze中提取地图每行每列的元素的个数
    directions = [(0, -1, 'C'), (0, 1, 'Z'), (1, 0, 'X')] #定义三个可能移动的方向的代码,C,Z,X
    queue = deque([start]) 
    visited = set([start]) #使用deque存储已访问的点
    prev = {}

    while queue:
        x, y = queue.popleft()
        if (x, y) == end:
            break
        for dx, dy, d in directions:
            nx, ny = x + dx, y + dy
            if 0 <= nx < rows and 0 <= ny < cols and maze[nx][ny] == '0' and (nx, ny) not in visited:
                queue.append((nx, ny))
                visited.add((nx, ny))
                prev[(nx, ny)] = (x, y, d)

    if end not in prev:
        return None

    path = []
    x, y = end
    while (x, y) != start:
        x, y, d = prev[(x, y)]
        path.append(d)
    path.reverse()

    return path

#定义路径查找的函数

def find_shortest_path(maze):
    rows, cols = len(maze), len(maze[0])
    start = (0, 0)
    end = (rows - 1, cols - 1)
    path = bfs(maze, start, end)
    return path

path = find_shortest_path(maze)
print("".join(path) if path else "No path found")

https://i-blog.csdnimg.cn/direct/bf56056cbc1a43e5a1db051efef0f680.png 得到后通常还需要进行md5加密(结果为32位) https://i-blog.csdnimg.cn/direct/8bec43d0e4a94bbaaf297b9aab62520b.png