当前位置: 网学 > 编程文档 > 汇编语言 > 正文

高级语言反汇编程序的函数调用过程

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/18
下载{$ArticleTitle}原创论文样式
;      esp,ebp                ;esp复原
00402055   pop         ebp                    ;ebp出栈,它的值也复原了
00402056   ret                                ;返回到此时栈顶存储的代码地址:00401FC1
;故而如果不幸被修改了返回地址,程序就会出现意外

以上汇编代码由VC++6.0编译得到。

堆栈在EBP入栈后的情况:

       低位          高位
        ↓            ↓
内存地址      堆栈
        ┆            ┆
0012F600├──────┤← edi = 0012F600
        │            │
0012F604├─┄┄┄┄─┤
        │            │
        │            │
        ┆ 44h的空间  ┆
        ┆            ┆
        │            │
        │            │
0012F640├─┄┄┄┄─┤
        │            │
0012F644├──────┤← ebp被赋值后指向该单元,此时ebp=0012F644
        │AC F6 12 00 │ebp赋值为esp之前的值
0012F648├──────┤
        │C1 1F 40 00 │返回地址
0012F64C├──────┤← ebp + 8
        │A0 F6 12 00 │函数实参p的值
0012F650├──────┤
        │            │
        ├──────┤
        ┆            ┆

注:存储器存储空间堆栈按从高到低的排列,左边标注的地址是其右下方存储单元的最低位地址。如0012F644指向0012F6AC的AC字节,AC在栈顶。图中存储
  • 上一篇资讯: 用汇编破解cmos密码
  • 下一篇资讯: 如何产生一个BMP文件
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号