Posted on 2007-12-08 21:23
xyz 阅读(340)
评论(0) 编辑 收藏 引用 所属分类:
WIN32汇编
堆栈指针ESP的变化方法:先ESP=ESP-4,然后把要PUSH的值放入[ESP]里,就是说ESP是先变化到新的地址位置,然后在存入值,接着就停留在那里等待新的PUSH。
WIN32程序在调用函数时的压栈顺序如下:
ESP-4 |___EBP ___| 进入函数的ESP值,一般会执行PUSH EBP MOV EBP,ESP,则EBP就是入函数的堆栈指针,以便通过EBP引用函数内的变量
ESP |___EIP____| 调用函数后,自动压入下一条指令的EIP
以STDCALL方式的函数,参数由右到左分别压入,在处理完后必须恢复ESP的值到指向EIP的栈地址。一般函数可通过retun 4 这样的方式把ESP+4。