首頁
社區(qū)
課程
招聘
IDA怎么查看上一步地址
pumag 2022-1-9 940

圖片描述
ida調(diào)試到了PUSH這一步如何查看上一步地址
(本人小白,求大佬解答一下。萬分感謝)

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

分三種情況,如果是單步進(jìn)入此CALL,按下ECS可以返回到上一步代碼段,如果是中斷在此CALL看堆棧返回地址,如果是多線程中斷此CALL需要具體分析觸發(fā)點(diǎn)

回復(fù)
pumag: 如果是直接斷點(diǎn)打在這呢
回復(fù) 2022-1-11
SZUCEST 2022-1-11 2022-1-11編輯

一樓回答是x86的指令,你圖是ARM指令;
在push {R3-R7},LR 處斷點(diǎn)停下(執(zhí)行該指令前),
返回地址在LR寄存器中(LR寄存器也是R14寄存器);
若更往深一點(diǎn)學(xué)習(xí),想知道調(diào)用層次,
可以在斷下時(shí),記錄R3到R7以及LR(或R14)、SP(或R13)的值,執(zhí)行該指令,觀察各寄存器再棧中的入棧情況,LR在棧中位置等。
比如斷在push {R3-R7},LR 處,想知道外層的外層時(shí)誰調(diào)用的,就需要在得了外層函數(shù)(通過斷點(diǎn)處的LR)位置,分析函數(shù)棧結(jié)構(gòu)下,再再R13(SP)棧幀中尋找存放的上一個(gè)LR的位置,以此類推,祝你好運(yùn),Guy!

回復(fù)
pumag: 感謝大佬指點(diǎn)!
回復(fù) 2022-1-11