Maze
1.首先PEid查壳,查到是UPX的壳
2.UPX脱壳,之前在网上找脱壳工具,但是其实UPX是开源的,在github上下载后,在cmd下执行upx -d yourfile.exe就可以脱壳,拖进IDA是下面的样子,发现f5不能查看伪代码,再看左边的函数栏,没有main函数。
网上搜索后发现是加了花程序
查看上图的jnz跳转到了下一行代码。相当于没有跳转,接下来的call调用的一个不是地址的地址,网上的方法是将jnz指令nop掉(nop指令也就是控指令,执行的时候不做任何事,有时候可用于短接某些触点或用nop指令将不要的指令覆盖掉)
3.先将jnz指令nop掉(Edit->Patch program->Assemble),因为call后面很有可能事有用的数据,所以用d先转换为数据,jnz后面的也是花指令,所以应该把该数据包的高字节部分也nop掉,但是IDA总是不成功,所以用OD,修改后右键复制到可执行文件,然后右键保存
4.拖进IDA反汇编,这个代码逻辑比较简单,wsad其实就是玩游戏的上下左右,
初始dword_408078=7,dword_40807c = 0,需要经过十四次移动修改两个变量为5和-4,按照迷宫题目的经验应该有地图或者字符。提取出来自己排列一下
flag{ssaaasaassdddw}