測試文件:https://lanzous.com/iPyvcddmqsh
代碼分析
前22行代碼實際就是告訴我們輸入的前5個字符為"actf{"
主要分析sub_78A函數
byte_201020為:
00 00 00 00 23 00 00 00 00 00 00 00 23 23 23 23
00 00 00 23 23 00 00 00 4F 4F 00 00 00 00 00 00
00 00 00 00 00 00 00 00 4F 4F 00 50 50 00 00 00
00 00 00 4C 00 4F 4F 00 4F 4F 00 50 50 00 00 00
00 00 00 4C 00 4F 4F 00 4F 4F 00 50 00 00 00 00
00 00 4C 4C 00 4F 4F 00 00 00 00 50 00 00 00 00
00 00 00 00 00 4F 4F 00 00 00 00 50 00 00 00 00
23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 23 00 00 00
00 00 00 00 00 00 4D 4D 4D 00 00 00 23 00 00 00
00 00 00 00 00 00 00 4D 4D 4D 00 00 00 00 45 45
00 00 00 30 00 4D 00 4D 00 4D 00 00 00 00 45 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 45 45
54 54 54 49 00 4D 00 4D 00 4D 00 00 00 00 45 00
00 54 00 49 00 4D 00 4D 00 4D 00 00 00 00 45 00
00 54 00 49 00 4D 00 4D 00 4D 21 00 00 00 45 45
這實際也是個迷宮題
外層while循環,就是到0x21時停止,v2為當前位置,v3從輸入的第六個字符開始遍歷數組,v4實際是對v2位置的移動。
W 向上移動
E 向右移動
M 向下移動
J 向左移動
第二處,用了個循環,if條件判斷的是位置是否到達邊界,越界退出。
整個迷宮就是用WEMJ控制移動,0可以移動(一直移動),到達非0位置停止,返回上一位置。左上角為起點,0x21為終點。手動解迷宮
MEWEMEWJMEWJM
get flag!
flag{MEWEMEWJMEWJM}