在使用ida做逆向时发现main2函数底部出现:main2     endp ; sp-analysis failed,刚使用ida打开时main2函数还没有出现栈指针分析失败。估计在分析时不正确的修改致使ida对栈指针分析出错。图如下:

sp-analysis failed

一个明显错误的地方就是0X00403C22到0X00403C27处,在调用了firstClass_Init函数(有一个参数)后,栈顶指针还是02C,没有变成028,解决办法:

1、在0X00403C22处点击02C栈顶,右键点击Change stack pointer…(快捷键Alt+K),修改成0X4,如下图:

sp-analysis failed

修改之后此处显示正常。但是函数结束处依旧有:sp-analysis failed

2、选择编辑函数,把0X24修改成0X14,如下图:

sp-analysis failed

此时依旧sp-analysis failed

3、同第二步,只是要修改firstClass_Init函数,0x10。如下图:

sp-analysis failed

sp-analysis failed在main2函数底部消失。

造成栈顶分析失败的原因有很多,这只是其中一种,并不能用来解决所有的栈顶分析失败。

更详细的原因可以参考《IDA Pro权威指南》第90页函数特性。


不止一次遇到栈指针分析错误的情况,总结以下几点:

1、确定本函数的栈大小、传入参数数量、是否保存寄存器,对本函数做响应修改

sp-analysis failed

2、在本函数内部分析每一行的栈指针,看ida有没识别错误的,如果有识别错误的通过Alt+K修改过来

相关文章:

  • 2021-05-21
  • 2021-08-05
  • 2021-03-31
  • 2021-07-07
  • 2021-07-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-09
  • 2017-11-22
  • 2022-01-01
  • 2021-10-19
  • 2018-01-06
相关资源
相似解决方案