首页
社区
课程
招聘
[求助]请高手解惑下,谢谢
发表于: 2008-12-26 23:40 2549

[求助]请高手解惑下,谢谢

2008-12-26 23:40
2549
下面是一个MFC程序的一个新建按纽的消息响应函数,注释的内容是我理解的,不知道是否正确,请高手帮忙指正下,其中还有个问

题需要高手帮我解惑下,具体的看注释内容,谢谢。

.text:0046C9D0 sub_46C9D0      proc near               ; CODE XREF: sub_46C3B0+1CEp
.text:0046C9D0                 push    esi
.text:0046C9D1                 mov     esi, ecx    ;ECX 应该是 this 指针吧
.text:0046C9D3                 mov     eax, [esi+80h]  ; 这里就有问题了,我单步跟踪了下,esi = 0051FB98h ,
              ;0051FB98 dword_51FB98 dd 11Ah dup(4F1008h) 这是data段相应地址的数据定义。
              ;按照我的理解eax 的值应该就是数组 dword_51FB98[80h/4]的值就
              ;应该等于 4F1008h ,但是 eax 的实际值却是00D525C8 ,这是为什么? 
.text:0046C9D9                 test    eax, eax
.text:0046C9DB                 jz      short loc_46C9FD
.text:0046C9DD                 mov     eax, [esi]
.text:0046C9DF                 call    dword ptr [eax+88h] ; call sub_4C9B22
.text:0046C9E5                 test    eax, eax
.text:0046C9E7                 jz      short loc_46C9F2
.text:0046C9E9                 push    0
.text:0046C9EB                 mov     ecx, esi
.text:0046C9ED                 call    sub_4C9B5D
.text:0046C9F2
.text:0046C9F2 loc_46C9F2:                             ; CODE XREF: sub_46C9D0+17j
.text:0046C9F2                 mov     ecx, [esi+80h]
.text:0046C9F8                 mov     edx, [ecx]
.text:0046C9FA                 call    dword ptr [edx+34h] ; CDocManager::OnFileNew(void) 地址是[004CB7F6],主要逻辑处理的地方吧?
.text:0046C9FD
.text:0046C9FD loc_46C9FD:                             ; CODE XREF: sub_46C9D0+Bj
.text:0046C9FD                 call    sub_4805C0
.text:0046CA02                 mov     ecx, eax
.text:0046CA04                 call    sub_4774E0
.text:0046CA09                 pop     esi
.text:0046CA0A                 retn
.text:0046CA0A sub_46C9D0      endp

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
[QUOTE=sttest;556549]; 这里就有问题了,我单步跟踪了下,esi = 0051FB98h ,
;0051FB98 dword_51FB98 dd 11Ah dup(4F1008h) 这是data段相应地址的数据定义。
;按照我的理解eax 的值应该就是数组 dword_51FB98[80h/4]的值就
;应该等于 4F1008h ,但是 eax 的实际值却是00D525C8 ,这是为什么? [/QUOTE]

0051FB98 dword_51FB98 dd 11Ah dup(4F1008h)是IDA静态反汇编的结果,其中的值是变量的初始值。

但既然是变量,它的值就可以在运行期改变。当你用OD动态跟踪到这里时,看到的是变量当前的值。
2008-12-27 00:31
0
游客
登录 | 注册 方可回帖
返回
//