Skip to content

ida反编译错误

solei1 edited this page Apr 11, 2018 · 2 revisions

"positive sp value has been found"

解决方法:

  1. 用Option->General->Disassembly, 将选项Stack pointer打勾;
  2. 仔细观察每条call sub_xxxxxx前后的堆栈指针是否平衡;
  3. 有时还要看被调用的sub_xxxxxx内部的堆栈情况,主要是看入栈的参数与ret xx是否匹配;
  4. 注意观察jmp指令前后的堆栈是否有变化;
  5. 有时用Edit->Functions->Edit function...,然后点击OK,(按D再按C键)刷一下函数定义。

其实勾选Stack pointer选项后每行汇编代码和指令地址之间会多一列数字,这些数值就是SP实际的偏移值。call sub_xxx前面如果显示-0x07H,则将光标停在紧接着这个call后面的一行指令之前(即刚返回的地方),按Alt+K设置新的SP值为-0x07H,再按D按C刷新下函数定义就可以了。

Clone this wiki locally