首页
社区
课程
招聘
IDA怎么查看上一步地址
pumag 2022-1-9 964

图片描述
ida调试到了PUSH这一步如何查看上一步地址
(本人小白,求大佬解答一下。万分感谢)

收藏
2条回答
恒大 2022-1-11

分三种情况,如果是单步进入此CALL,按下ECS可以返回到上一步代码段,如果是中断在此CALL看堆栈返回地址,如果是多线程中断此CALL需要具体分析触发点

回复
pumag: 如果是直接断点打在这呢
回复 2022-1-11
SZUCEST 2022-1-11 2022-1-11编辑

一楼回答是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!

回复
pumag: 感谢大佬指点!
回复 2022-1-11