扫一扫
没什么特殊
IDA打开
输入的前五个字符需要为actf{,然后进入函数sub_78A
发现这个代码不好将
就先剧透一下再解释各段的作用, 这是一个迷宫题
查看byte_201020
充当地图
v2 -= v4相当与退一步
a1限制为87 69 77 74(对应字符W E M G),且不重复出现
这一段则是对v2进行操作,(迷宫里进行移动)
v4进行限制(使其不超出迷宫范围),可以判断出迷宫宽为16
循环条件和v2+=v4,效果为如果朝一个方向一直移动知道遇到不为0的数或越界退出
出迷宫后我们的最后一个数为125,对应字符 ’}‘
那么就开始解密
打印地图
a = [0, 0, 0, 0, 35, 0, 0, 0, 0, 0,
0, 0, 35, 35, 35, 35, 0, 0, 0, 35,
35, 0, 0, 0, 79, 79, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79, 79, 0, 80, 80, 0, 0, 0, 0, 0,
0, 76, 0, 79, 79, 0, 79, 79, 0, 80,
80, 0, 0, 0, 0, 0, 0, 76, 0, 79,
79, 0, 79, 79, 0, 80, 0, 0, 0, 0,
0, 0, 76, 76, 0, 79, 79, 0, 0, 0,
0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
0, 79, 79, 0, 0, 0, 0, 80, 0, 0,
0, 0, 35, 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,
35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77, 77, 77, 0, 0, 0, 35, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 77, 77, 77,
0, 0, 0, 0, 69, 69, 0, 0, 0, 48,
0, 77, 0, 77, 0, 77, 0, 0, 0, 0,
69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 69, 69, 84, 84,
84, 73, 0, 77, 0, 77, 0, 77, 0, 0,
0, 0, 69, 0, 0, 84, 0, 73, 0, 77,
0, 77, 0, 77, 0, 0, 0, 0, 69, 0,
0, 84, 0, 73, 0, 77, 0, 77, 0, 77,
33]
for i in range(len(a)):
if(a[i] == 33):
print('%-4s' %(a[i]),end = '')
break
if(i % 16 == 0):
print('\n')
print('%-4s' %(a[i]), end = '')
手动解密
actf{MEWEMEWJMEWJM}
写的有点糊别介