| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3393 人关注过本帖
标题:如何计算上面程序的返回地址?
取消只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
 问题点数:0 回复次数:3 
如何计算上面程序的返回地址?
;msgbx.asm file.
.386p
.model flat, stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib

.code

start:
    push MB_ICONINFORMATION or MB_OK
    call Func1
    db "Test",0
Func1:
    call Func2
    db "Hello",0
Func2:
    push NULL   
    call MessageBoxA
;    ret
end start
如何计算上面程序的返回地址
我使用 masm32 编译后得到的 msgbx.obj 中查看到的返回地址是 0x0a000000(返回地址.JPG)
但是对masm32 编译后得到的 msgbx.exe 反汇编后得到地址却是 0x00402000(返回地址1.JPG)
为什么不一样?

返回地址1.JPG (20.64 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


返回地址.JPG (71.45 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 返回地址 反汇编 masm32 
2008-10-12 23:47
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 2# ONEPROBLEM 的帖子
0x0a000000 呀
intel 的机子使用的是little endian 排序,所以我们看到的好像是 0x0a000000

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-14 00:20
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
http://www.chinaunix.net/jh/23/823662.html
little endian和big endian是表示计算机字节顺序的两种格式,所谓的字节顺序指的是长度跨越多个字节的数据的存放形式.
        假设从地址0x00000000开始的一个字中保存有数据0x1234abcd,那么在两种不同的内存顺序的机器上从字节的角度去看的话分别表示为:
       1)little endian:在内存中的存放顺序是0x00000000-0xcd,0x00000001-0xab,0x00000002-0x34,0x00000003-0x12
       2)big  endian:在内存中的存放顺序是0x00000000-0x12,0x00000001-0x34,0x00000002-0xab,0x00000003-0xcd
       需要特别说明的是,以上假设机器是每个内存单元以8位即一个字节为单位的.
       简单的说,ittle endian把低字节存放在内存的低位;而big endian将低字节存放在内存的高位.
       现在主流的CPU,intel系列的是采用的little endian的格式存放数据,而motorola系列的CPU采用的是big endian.

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-15 00:49
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
我一直没有明白,为什么这 返回地址.jpg  引起这么多争议
刚才猛然才发现这个图有点不好,就是它刚显示了两个很接近的地址,我感觉有可能上面的讨论 就是由于这点没有清楚才导致的
红色方框中的地址当然就是真正的地址,也就是0x000000a0h 不会由争议
但是我其实说的是黄色方框中的地址,这个地址我个人感觉是 0x0a000000h
不好意思了,是我没有说清楚,因为我一直没有注意到 红色方框中的地址

返回地址.jpg (23.26 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-01 13:43
快速回复:如何计算上面程序的返回地址?
数据加载中...
 
   



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

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