[CTF从0到1]反汇编中的花指令

发布于 2024-02-04  137 次阅读


[HDCTF2019]Maze

这个题后来看wp才知道涉及到花指令了。

题目提示很明确,是迷宫题,查壳发现有upx壳,脱掉后拖进IDA直接找字符串。

迷宫给出了,数了数一共70位,直接猜10×7的迷宫,wasd控制上下左右,

直接出flag{ssaaasaassdddw}。

后来看其他师傅的wp复盘才知道这个题考察的其实是花指令...

IDA是无法直接出伪代码的,因为有花指令干扰,

这里红色部分的地址是不存在的,所以IDA无法正常反编译。而上面有个jnz无条件跳转到假地址这一行,这类的花指令常见的有

xor eax, eax
jz local

或者

cmp eax, ecx
jnz local

特征就是在跳转后跟个假call。

把这部分NOP掉:

保存修改,程序重新加载进IDA就可以正常识别出main函数了。
(PS:经过多次尝试以及更换工具,只有仅NOP掉jnz和call时,后续才能正常反编译,只NOP掉call或是把上一行的cmp也NOP掉是无法正常反编译main函数的,我暂且蒙在鼓里。并且IDA7.7无法保存更改,6.8没找到保存选项在哪,8.3是可以的,不过我个人比较喜欢用OD)

进入main函数,

很明显,是wasd操作走迷宫,其余的思路就和上文提到过的差不多了。

最后更新于 2024-02-04