逆向工程(四)——栈帧分析

基本介绍

  • 栈帧就是利用ESP寄存器访问栈内局部变量、参数、函数返回地址等的手段。
  • IA-32寄存器中,ESP寄存器为栈顶指针,EBP寄存器为栈帧指针。
  • 程序运行时,ESP寄存器由于要访问局部变量、参数等随时会发生变化,若以其为基准编写程序十分困难,并且也很难使CPU引用到准确的地址,所以调用函数时,先把ESP的值保存在EBP中,这样以EBP的值为基准可以安全访问。
         PUSH EBP                 ;EBP的值保存在栈中
         MOV EBP,ESP              ;保存当前ESPEBP
         ..........               ;函数体,EBP的值始终不变
         MOV ESP,EBP              ;将函数起始地址返回到ESP
         POP EBP                  ;从栈中弹出EBP
         RETN                     ;函数终止

未完待续

你可能感兴趣的:(逆向工程核心原理)