作为刚入门逆向新手,奔着遇到问题解决问题的思路,通过以文章的形式加深印象,仅作笔记分享。
花指令是用来对抗静态反汇编的,通过插入无用的字节使ida无法正确反编译,但不影响函数执行。通常使用花指令的程序在ida中会出现call一个函数地址加1的情况,这种情况应该call 0x1209这个地址。
这时候我们需要双击找到这个函数,会看到以下报错。
定位到push rbx,通过Edit->Patch program->Change byte查看push rbx对应的十六进制是“ff f3”
也可以将光标放在此行,按快捷键d,是将指令转成数据。
地址0x1208是我们不需要的,而0x1209才是函数的正确地址,因此选中db 0F3h,右键->Analyze selected area,是让ida识别成指令。
此时我们需要让0x1209当成函数的起始位置,光标定位到该行,通过快捷键p生成函数,可以看到如下:
因为0x1208地址是无用的指令,所以需要给它nop掉,通过Keypatch插件将该行修改为nop,发现显示为db 90h,这时候右键让ida再分析一下就变成了nop指令了。
f5打开反编译窗口,如果伪代码没有变化,说明ida有缓存,再按f5刷新一下即可。