OllyDbg捕捉MFC程序按钮事件

来源:互联网 发布:哪的java培训学校好 编辑:程序博客网 时间:2024/05/23 12:01
1. 首先下消息断点WM_LBUTTONUP, 或者使用bp TranslateMessage MSG==WM_LBUTTONUP

2.点按钮会断在USER32模块中, ALT+M选择代码段F2下断点,再F9运行, 会看到执行到

0040160A   .- FF25 E0204000 jmp     dword ptr [<&MFC42.#6374_CWnd::W>;  MFC42.#6374_CWnd::WindowProc

3. 在这里会比较坑爹, F8进去之后, ALT+M选择代码段F2下断点,再F9运行, 然后反反复复都是差不多这个位置, 最好的办法是在WindowProc下面找到这句下断点

00401670   .- FF25 24214000 jmp     dword ptr [<&MFC42.#4425_CDialog>;  MFC42.#4431_CPropertySheet::OnCmdMsg

4.F9运行起来, F8进去之后, ALT+M选择代码段F2下断点,再F9运行,会看到执行到这条语句

00401230   .  B8 E0224000   mov     eax, 004022E0

5.单步运行,会到MFC42模块里, 继续F8单步,会看到下面有一个call

73D323BA    E8 7F000000     call    73D3243E

6., 在这里ALT+M,再选择 代码段F2下断点, F9运行,OK! 跳到消息响应处理的代码里.

00401470   .  6A 00         push    0
00401472   .  68 FC304000   push    004030FC
00401477   .  68 20304000   push    00403020                         ;  ASCII "OnButton1"
0040147C   .  E8 37020000   call    <jmp.&MFC42.#4224_CWnd::MessageB>

00401481   .  C3            retn

---------------------------------------------------------------------------------------------------

只试了VC6.0, 其他版本的程序可能会有区别.

0 0