首页
社区
课程
招聘
一个另人无法相信的怪问题,运行的结果和调试结果不同
发表于: 2006-11-9 23:57 4594

一个另人无法相信的怪问题,运行的结果和调试结果不同

2006-11-9 23:57
4594
我用的调试器是OllyDbg,和visual .net c++
以下是程序

int _tmain(int argc, _TCHAR* argv[])
{
        DWORD kn_addr = 0;
        DWORD nt_addr = 0;
        _asm{
                PUSH        DWORD PTR [ESP+140h]
                POP                kn_addr
                //kn_addr变量实际运行时和调试(visual.net和OllyDbg)时显示均为7C81 6FD7
                PUSH        DWORD PTR [ESP+144h]
                POP                nt_addr
                //nt_addr变量实际运行时和在visual .net里调试都为0,但在OllyDbg调试时显               

                //示为7C93 0738,实在是太不可思议了,想来想去也想不通,请各位高手指教
        }
        cout<<kn_addr<<endl;
        cout<<nt_addr<<endl;
        return 0;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
访问越界,结果当然是未定义的
2006-11-10 01:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问能说得明白点吗,真的不是很懂,就算是越界,运行的结果也应该和调试的结果是一样的呀,真是想不懂, 请高手们指教一下
2006-11-12 23:00
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
也不是阿,比如说用visaul c++的发布版和调试版编译出来的程序不一样,而且好像基于.net的程序的运行时都有一个检测越界的功能,可以保证程序的跨平台性和安全性的。
2006-11-13 11:47
0
游客
登录 | 注册 方可回帖
返回
//