| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 577 人关注过本帖
标题:ebp在子程序中不是不能改动的吗
只看楼主 加入收藏
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:2 
ebp在子程序中不是不能改动的吗
程序代码:
00401340  /$  55            PUSH EBP
00401341  |.  8B6C24 0C     MOV EBP,DWORD PTR SS:[ESP+C]
00401345  |.  56            PUSH ESI
00401346  |.  57            PUSH EDI
00401347  |.  8B7C24 18     MOV EDI,DWORD PTR SS:[ESP+18]
用OD看一个子程序的开头是这样的,ebp被改动了,而且还用esp来找参数
ebp在子程序中不是用来寻址参数不能改动的吗
子程序的开头不是这两句吗
push ebp
mov ebp,esp
求指教
搜索更多相关主题的帖子: 子程序 
2011-08-30 14:22
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:20 
push ebp
mov ebp,esp

这是一种堆栈的框架 是C编译器在某些编译参数下生成的代码

举个例子 比如gcc的-fomit-frame-pointer 就可以不生成这样的代码 具体你看资料

在我说的那种框架里面 ebp是保存esp的 而且用ebp来寻址

但 不代表一定用这种框架 而且编译器 也就是用我说的那个参数 是可以生成其他的类型的堆栈框架的 也就是你举的例子

具体问题具体分析 我能说的就这些了
2011-08-30 14:40
nbaqqqq
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:202
专家分:137
注 册:2009-11-6
收藏
得分:0 
谢谢版主
2011-08-30 14:48
快速回复:ebp在子程序中不是不能改动的吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025650 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved