pwn学习笔记

本文仅作自己的学习记录,以防丢失或忘记,不属于教程,所以请无视这篇文章。日后再根据情况整理。

1.函数调用过程很重要,大致是 主函数把待传入的参数压栈 -> 返回地址压栈-> 修改ip来到子函数代码 -> EBP压栈 -> ESP赋给EBP(逻辑上开辟一段新栈) ->  存放子函数变量等子程序用到的资源。

  调用完毕回到主函数的过程与之相反,EBP赋给ESP(即把ESP拉到新栈栈空位置,丢弃新栈内容) -> EBP出栈(还原旧栈) -> 跳转到返回地址。

  所以新栈的结构图为:

  (低地址)

    子函数变量

    EBP

    return address

    传入参数

    主函数原栈

  (高地址)

  

 

 

2.IDA中变量名写在最低地址的内存旁边。例如有一个变量buff占3字节,从01A到01C。01D是变量B。那么IDA显示

    01A  buff

    01D  B

上一篇:hello pwn


下一篇:linux kernel pwn学习之UAF