能力值:
( LV2,RANK:10 )
|
-
-
2 楼
没人吗?自己顶下 ,希望大家帮忙分析指导下
|
能力值:
( LV12,RANK:238 )
|
-
-
3 楼
1. 程序有很多段,下断点在.text 段。 2. <&MFC42.#4425_CDialog 可能原因是目标程序链接的realse版本,而这个版本是没有符号,按照序号连接。 3. 你考本那段非常正确。只不过你迷失了。你的消息断点是在万能断点(网上能搜到)所在函数的下一级。消息处理在后边又经过了很多MFC的函数处理。如果MFC库是采用动态链接,那么在.text段下断点的方法能较快定位,好像也要经过很多次。如果是静态链接那么,MFC的代码和你处理事件代码在同一空间,这种方法好像很困难。 4. 建议你自己写一个MFC程序采用然后在IDE下,下BUTTON的断点,就可以从函数堆栈中看到调用了哪些MFC函数(这些都是固定模式,或者叫MFC的消息路由)。 5. 以下是我以前总结的。已经够忘了,你可以参考下定位(对静态库连接也有效)。
语音表达很苍白,大致意思是挨个函数定位.然后就可以定位到你的BUTTON函数。建议自己写的MFC调试,可以有个对照。 AfxWndProc 360 WM_QUERYAFXWNDPROC AfxCallWndProc AfxCallWndProc FS[0] 关键值2个0x110 WM_INITDIALOG 之间定位函数 call eax pWnd->WindowProc
pWnd->WindowProc(短) call reg 第一个函数 无明显特征码 OnWndMsg
OnWndMsg FS[0] 0x111 WM_INITDIALOG 之后第一个函数 call edx if (message == WM_COMMAND) if (OnCommand(wParam, lParam))
CDialogEx::OnCommand 最后一个call 短小 常量call 含Iswindow函数 CDialog::OnCommand (第二个call) CDialog::OnCommand -> OnCmdMsg VS2010 2次调用 CDialog::OnCmdMsg 最后一个函数 IsWindow ReflectLastMsg 等函数
CDialog::OnCmdMsg 第一个call,-1 0x8000 F000 CCmdTarget::OnCmdMsg
CCmdTarget::OnCmdMsg(长代码)最后找 AfxFindMessageEntry _AfxDispatchCmdMsg
_AfxDispatchCmdMsg 中有一个函数指针 7个参数,中间第四个为地址。 最后一个call调用事件跟随调用的call指令进入即可
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
vs 调试 Button下断点看栈回溯
|
能力值:
( LV12,RANK:238 )
|
-
-
5 楼
此外,MFC42的库应该是更早的编译器吧。不是VS2008吧?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
我是看网上说放一个dll关于MFC标识符的在OD的lib目录下就可以显示MFC的标识符出来,所以找了MFC42.dll 。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
上ida更靠谱,不壳的话,
|
能力值:
(RANK:10 )
|
-
-
8 楼
顶下。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
程序发过来,我给你找
|
能力值:
( LV6,RANK:93 )
|
-
-
10 楼
试试xspy https://github.com/lynnux/xspy
|
能力值:
( LV6,RANK:80 )
|
-
-
11 楼
https://bbs.pediy.com/thread-248810.htm https://bbs.pediy.com/thread-248816.htm 这两篇能帮到你
|
|
|