下面是一个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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课