OllyDbg---call和ret指令

call和ret

call指令

  • cal指令是转移到指定的子程序处,后面紧跟的操作数就是给定的地址。
  • 例如,call 401362表示转移到地址401362处,调用401362处的子程序,当子程序调用完毕之后就返回到call指令的下一条语句处。
  • 如果想要跟踪子程序内部,可以按F7跟进;
  • 如果只是想先看看子程序里面的内容再决定要不要跟踪,可以右键follow;
  • 如果不想跟踪子程序内部,按下F8键,继续执行call指令的下一条语句。

ret指令

  • 如果call跟进的话,ret就会返回call指令的下一条语句处的地址。

  • 当执行到ret指令时,栈顶存放的一般是子程序的返回地址。

  • ret指令不仅可以用于子程序的返回,比如

    PUSH 401256
    RET
    
    将401256压入到堆栈中,ret指令会将401256当做子程序的返回地址,
    但其实它并不是返回地址,执行ret指令后依然可以跳转到401256地址处。
    
原文地址:https://www.cnblogs.com/KX-Lau/p/12928806.html