能力值:
( LV12,RANK:650 )
|
-
-
2 楼
附件呢?
|
能力值:
(RANK:10 )
|
-
-
3 楼
就是阿,附件呢?
|
能力值:
( LV7,RANK:100 )
|
-
-
4 楼
最初由 firstrose 发布 附件呢?
不好意思,昨晚选了附件,忘了点上传按钮!
|
能力值:
(RANK:10 )
|
-
-
5 楼
是楼主自己写的吗?我先在我的VC的demo程序力测试一下,呵呵
|
能力值:
(RANK:10 )
|
-
-
6 楼
非常感谢!!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
还不错,顶了。。。。。。。
|
能力值:
(RANK:10 )
|
-
-
8 楼
结合其父窗口message map的输出,还可以知道当点击这个按钮时,会跳到哪段程序上执行
========
楼主可以仔细讲解一下这个过程吗? 我是这样作的,我用VC刚才编写了一个test程序,添加了一个按钮,这个按钮的事件函数是这样的
void CTestDlg::OnButton1()
{
AfxMessageBox("1111");
}
编译完以后,我运行,用你的工具找到OnCommand的函数入口,记下这个地址,再用OD载入test,在那个地址下断点,点击那个按钮,就会被OD断下来,F8到MFC的dll里面,慢慢的跟踪就会跟踪到test的按钮函数代码!!呵呵,当然了,我是比较懒的,在MFC的dll里面我直接下test的code段的内存访问断点,F9运行直接断在函数的入口!!!
呵呵,我已经测试通过,感谢楼主阿!其实当初那本<<深入浅出MFC>>真的应该好好看!这些都是最基本的MFC的消息传递的流程.
|
能力值:
(RANK:10 )
|
-
-
9 楼
其实OnCommand调用OnCmdMsg来进行消息分发,所以直接找这个函数的地址,用OD下断,然后再下exe的内存访问断点,直接停在按钮函数的入口,太爽了!
以后MFC的程序有好看的了.省了好多事情.嘿嘿
|
能力值:
( LV7,RANK:100 )
|
-
-
10 楼
最初由 great123 发布 结合其父窗口message map的输出,还可以知道当点击这个按钮时,会跳到哪段程序上执行
======== 楼主可以仔细讲解一下这个过程吗?
........
就以mfcspy自己为例!
用它spy一下那个spy it的按钮,你可以看到结果如下
map HWND 000C05EA To CWnd* failed!
这不要紧,上面的框中出现了: 000C05EA(Button,id=03e9)
id=03e9很重要,记住它,
然后,spy一下mfcspy的主窗口,输出很长内容,最后一段如下:
message map=00403480(mfcspy.exe+003480)
msg map entries at 004033C0(mfcspy.exe+0033C0)
OnMsg:WM_SYSCOMMAND(0112),func=00401520(mfcspy.exe+001520)
OnMsg:WM_PAINT(000f),func=004015A0(mfcspy.exe+0015A0)
OnMsg:WM_QUERYDRAGICON(0037),func=00401650(mfcspy.exe+001650)
OnCommand: notifycode=0000 id=03e9,func=00401670(mfcspy.exe+001670)
OnMsg:WM_LBUTTONUP(0202),func=004017F0(mfcspy.exe+0017F0)
OnMsg:WM_MOUSEMOVE(0200),func=00401970(mfcspy.exe+001970)
OnMsg:0401,func=00401760(mfcspy.exe+001760)
注意这一行:
OnCommand: notifycode=0000 id=03e9,func=00401670(mfcspy.exe+001670)
这里有id=03e9!!跟上面的id一样
也就是说,点击那个铵钮的时候,mfc 会跳到 00401670 处执行
你注意到了没??
|
能力值:
( LV9,RANK:810 )
|
-
-
11 楼
晕。我的mfc程序:(
|
能力值:
(RANK:10 )
|
-
-
12 楼
非常感谢楼上的解释,再次感谢.加我QQ:14322807,我们好好聊聊
|
能力值:
( LV9,RANK:810 )
|
-
-
13 楼
对我的程序不起作用。呵呵:D
|
能力值:
(RANK:10 )
|
-
-
14 楼
这个工具算是2005年的比较重要的一个工具~~~~~对于我来说,呵呵
以前总是用SPY++配合OD扫描MFC的函数来进行.
|
能力值:
( LV6,RANK:90 )
|
-
-
15 楼
对MFC程序很有威胁,刚才发现一个问题,好像对静态编译的MFC程序好像不能工作。
|
能力值:
( LV7,RANK:100 )
|
-
-
16 楼
最初由 nOpnOp 发布 对MFC程序很有威胁,刚才发现一个问题,好像对静态编译的MFC程序好像不能工作。
对,目前是这样,不过我会考虑加入支持。请等等!
|
能力值:
( LV6,RANK:90 )
|
-
-
17 楼
最初由 goldenegg 发布
对,目前是这样,不过我会考虑加入支持。请等等!
很想和你交流一下,我这里也有一款自己做的工具可以查找按钮对应的消息处理入口,原理和你不一样。我是基于调试的。因为我这里有限制不能上传文件,所以请留下你的Email我给你发过来。footfish2002@hotmail.com是我的MSN,欢迎交流
|
能力值:
( LV7,RANK:100 )
|
-
-
18 楼
xungeng@gmail.com
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
比spy++好用,感觉很直接!
|
能力值:
( LV6,RANK:90 )
|
-
-
20 楼
最初由 goldenegg 发布 xungeng@gmail.com
已经发了,你看一下你的邮件。
|
能力值:
( LV10,RANK:170 )
|
-
-
21 楼
很不错,希望加入对MFC静态编译的支持。精华+置顶:D
|
能力值:
( LV6,RANK:90 )
|
-
-
22 楼
刚才看了一下你的程序,发现做法很新颖,利用HOOK(WH_CALLWNDPROC)机制来将动态库注入到目标进程然后在内部利用MFC自己的CWnd类函数和内部数据结构来得到这些信息,很有创意!如果有错谬的地方请釜正!期待支持静态编译
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
酷之极也!
|
能力值:
(RANK:10 )
|
-
-
24 楼
最初由 goldenegg 发布
就以mfcspy自己为例! 用它spy一下那个spy it的按钮,你可以看到结果如下 map HWND 000C05EA To CWnd* failed! ........
辛苦了!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
的确很有用!!感谢楼主!!
|
|
|