-
Notifications
You must be signed in to change notification settings - Fork 7
ida反编译错误
solei1 edited this page Apr 11, 2018
·
2 revisions
解决方法:
- 用Option->General->Disassembly, 将选项Stack pointer打勾;
- 仔细观察每条call sub_xxxxxx前后的堆栈指针是否平衡;
- 有时还要看被调用的sub_xxxxxx内部的堆栈情况,主要是看入栈的参数与ret xx是否匹配;
- 注意观察jmp指令前后的堆栈是否有变化;
- 有时用Edit->Functions->Edit function...,然后点击OK,(按D再按C键)刷一下函数定义。
其实勾选Stack pointer选项后每行汇编代码和指令地址之间会多一列数字,这些数值就是SP实际的偏移值。call sub_xxx前面如果显示-0x07H,则将光标停在紧接着这个call后面的一行指令之前(即刚返回的地方),按Alt+K设置新的SP值为-0x07H,再按D按C刷新下函数定义就可以了。