IDA出现“sp-analysis failed”和F5无法反编译的解决方法
IDA出现“sp-analysis failed”和F5无法反编译的解决方法
只会看别人writeup的小白一枚
最近刚刚学习逆向知识,并开始尝试做creakme,果然出现了各种稀奇古怪的问题,逆向creakme后出现“endp ;sp-analysis failed”,没办法F5反编译,对我这种小白真的太不友好了,在此记录一下。
这种可能是存在花指令或者函数被拆分,导致IDA无法继续分析。
解决方法如下:
勾选IDA的Options-General-Disassembly-“Stack pointer”,打开堆栈指针
从下图可以看到堆栈指针出现负值
这里介绍两种方法:
第一种是直接更改堆栈指针不平衡
可以看到红色错误上面的负值为-C8,单击地址4A1A90,按下Alt+K,更改sp的值为-0xC8后,就可以正常F5反编译了!
第二种方法是直接更改地址
首先找到调用这一段(loc_4A1A7E)跳转的地址(4A1A2E)。
单击地址4A1A2E,点击Edit-Functions-“Delete function”,然后,选择地址.text:0040106E,点击Edit-Functions-“Set function End“。也可以点击右键“编辑函数”,将结束地址修改为4A1A92,这样也可以解决问题。
小白努力活着,恳请大佬指正。
参考:
https://blog.****.net/lixiangminghate/article/details/78820388