ida调试到了PUSH这一步如何查看上一步地址(本人小白,求大佬解答一下。万分感谢)
分三种情况,如果是单步进入此CALL,按下ECS可以返回到上一步代码段,如果是中断在此CALL看堆栈返回地址,如果是多线程中断此CALL需要具体分析触发点
一楼回答是x86的指令,你图是ARM指令;在push {R3-R7},LR 处断点停下(执行该指令前),返回地址在LR寄存器中(LR寄存器也是R14寄存器);若更往深一点学习,想知道调用层次,可以在断下时,记录R3到R7以及LR(或R14)、SP(或R13)的值,执行该指令,观察各寄存器再栈中的入栈情况,LR在栈中位置等。比如断在push {R3-R7},LR 处,想知道外层的外层时谁调用的,就需要在得了外层函数(通过断点处的LR)位置,分析函数栈结构下,再再R13(SP)栈帧中寻找存放的上一个LR的位置,以此类推,祝你好运,Guy!