首页
社区
课程
招聘
[求助]消息断点处
发表于: 2009-5-14 15:16 5003

[求助]消息断点处

2009-5-14 15:16
5003
36页 第2段
请教:上面介绍如何找到程序的消息循环处的代码,但不是直接处理按钮事件,重复这个过程,在几次中断事到达处理按钮的事件代码。很快就能发现“Check”按钮事件的代码.
     看了几遍也没看明白,“Check”按钮事件是如何发现的?请赐教3::

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
如何发现“Check”按钮事件的代码:

在 view/window 弹出框中可以看到 "check" 按钮的ID是 000003F5,所以看代码时在 case 语句中值为 3f5的代码段就是 “Check”按钮事件的代码.

下面 0040119C 后的语句就是"check"按钮的事件代码,由 0040115E   的比较结果经00401169 跳转而来.

-----------------------------------------------------
0040115E   .  3D F5030000   cmp     eax, 3F5                         ;  Switch (cases 2..9C42)
00401163   .  0F8F 2C010000 jg      TraceMe.00401295
00401169   .  74 31         je      short TraceMe.0040119C
0040116B   .  83E8 02       sub     eax, 2
0040116E   .  74 0B         je      short TraceMe.0040117B
00401170   .  2D E8030000   sub     eax, 3E8
00401175   .  0F85 45010000 jnz     TraceMe.004012C0
0040117B   >  8B9424 000100>mov     edx, dword ptr [esp+100]         ;  Cases 2,3EA of switch 0040115E
00401182   .  6A 00         push    0                                ; /lParam = 0
00401184   .  6A 00         push    0                                ; |wParam = 0
00401186   .  6A 10         push    10                               ; |Message = WM_CLOSE
00401188   .  52            push    edx                              ; |hWnd
00401189   .  FF15 C0404000 call    dword ptr [<&USER32.SendMessageA>; \SendMessageA
0040118F   .  5F            pop     edi
00401190   .  33C0          xor     eax, eax
00401192   .  5E            pop     esi
00401193   .  81C4 F4000000 add     esp, 0F4
00401199   .  C2 1000       retn    10
0040119C   >  8BB424 000100>mov     esi, dword ptr [esp+100]         ;  Case 3F5 of switch 0040115E
004011A3   .  8B3D A0404000 mov     edi, dword ptr [<&USER32.GetDlgI>;  USER32.GetDlgItemTextA
004011A9   .  53            push    ebx
004011AA   .  8D4424 4C     lea     eax, dword ptr [esp+4C]
004011AE   .  6A 51         push    51                               ; /Count = 51 (81.)
004011B0   .  50            push    eax                              ; |Buffer
004011B1   .  6A 6E         push    6E                               ; |ControlID = 6E (110.)
004011B3   .  56            push    esi                              ; |hWnd
004011B4   .  FFD7          call    edi                              ; \GetDlgItemTextA

--------------------------------
2009-5-16 18:10
0
雪    币: 191
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦,是这样明白了,谢谢
2009-5-17 11:58
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我感觉这样比较好,知道check的ID是3f5后,
右键->search for->all switches

在switch(2...9C42)上
右键->List switch cases,然后在选3F5,然后fllow,下断点
2009-5-29 20:27
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
刚才发完了,结果显示该页无法显示,就又发了一遍,后来才发现已经发了,不好意思
2009-5-29 20:29
0
游客
登录 | 注册 方可回帖
返回
//