首页
社区
课程
招聘
[原创]mfc spy,把mfc程序的内部函数揪出来
发表于: 2005-1-14 00:05 106473

[原创]mfc spy,把mfc程序的内部函数揪出来

2005-1-14 00:05
106473
收藏
免费 7
支持
分享
最新回复 (93)
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
51
刚刚看完了代码,相当精彩。非常有创意,和以前的此类工具思路完全不同,支持!
2005-1-21 15:45
0
雪    币: 216
活跃值: (370)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
52
最初由 great123 发布
使用的是你的最新的版本.
上次哪个【关闭被Spy的程序的问题】操作系统是中文XPVLK+SP2,下面也是.
下面这个问题是,可以获得【注册】按钮的ID,但是无法在对话框的MSG中找到这个ID的小时入口

我看了一下,初步可以判定这个版本根本没有实现注册功能,只是个功能不全的demo版,应该是你付费他就会给你个完整版本的那种.你可以仔细研究一下.另外,如果不是demo版,那连壳都不加也真够大胆的
2005-1-21 19:08
0
雪    币: 166
活跃值: (112)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
53
我也写了一个东西DeMfc lite,只是半成品。我采用的是静态分析的方法。对比的结果我觉得,你的根据MessageMap Pump的方法可能漏了一些MessageMap

下面是分析你的MfcSpy.exe的结果
1.用MfcSpy分析
// Main Form
HWND: 000301CE
class:0012FE44(CDialog,size=0x60)
CDialog:CWnd:CCmdTarget:CObject

[+00]vtbl address=00403578(mfcspy.exe+003578)
[+04]CCmdTarget::m_dwRef=1
[+08]CCmdTarget::m_pOuterUnknown=00000000
[+0C]CCmdTarget::m_xInnerUnknown=00000000
[+10]CCmdTarget::m_xDispatch.m_vtbl=00000000
[+14]CCmdTarget::m_bResultExpected=00000001
[+18]CCmdTarget::m_xConnPtContainer.m_vtbl=00000000
[+1C]CCmdTarget::m_pModuleState=00135FF0
[+20]CWnd::m_hWnd=000301CE
[+24]CWnd::m_hWndOwner=00000000
[+28]CWnd::m_nFlags=00000018
[+2C]CWnd::m_pfnSuper=77E0D439
[+30]CWnd::m_nModalResult=FFFFFFFF
[+34]CWnd::m_pDropTarget=00000000
[+38]CWnd::m_pCtrlCont=00000000
[+3C]CWnd::m_pCtrlSite=00000000
[+40]CDialog::m_nIDHelp=00000066
[+44]CDialog::m_lpszTemplateName=00000066
[+48]CDialog::m_hDialogTemplate=00000000
[+4C]CDialog::m_lpDialogTemplate=00000000
[+50]CDialog::m_lpDialogInit=00000000
[+54]CDialog::m_pParentWnd=(CWnd*)00000000
[+58]CDialog::m_hWndTop=(HWND)00000000
[+5C]CDialog::m_pOccDialogInfo=00000000

[vtbl+00]GetRuntimeClass         =00402098->5F4064BC(MFC42.DLL+0064BC)
[vtbl+04]destructor              =004013D0(mfcspy.exe+0013D0)
[vtbl+08]Serialize               =00401D00(mfcspy.exe+001D00)
[vtbl+0C]AssertValid             =00401240(mfcspy.exe+001240)
[vtbl+10]Dump                    =00401D00(mfcspy.exe+001D00)
[vtbl+14]OnCmdMsg                =00402092->5F4064EB(MFC42.DLL+0064EB)
[vtbl+18]OnFinalRelease          =0040208C->5F418D39(MFC42.DLL+018D39)
[vtbl+1C]IsInvokeAllowed         =00401F90->5F4187CB(MFC42.DLL+0187CB)
[vtbl+20]GetDispatchIID          =00401F8A->5F4103E8(MFC42.DLL+0103E8)
[vtbl+24]GetTypeInfoCount        =00401F84->5F40196C(MFC42.DLL+00196C)
[vtbl+28]GetTypeLibCache         =00401F7E->5F40196C(MFC42.DLL+00196C)
[vtbl+2C]GetTypeLib              =00401F78->5F45E645(MFC42.DLL+05E645)
[vtbl+30]GetMessageMap           =00401420(mfcspy.exe+001420)
[vtbl+34]GetCommandMap           =00401F72->5F45E6A6(MFC42.DLL+05E6A6)
[vtbl+38]GetDispatchMap          =00401F6C->5F45E662(MFC42.DLL+05E662)
[vtbl+3C]GetConnectionMap        =00401F66->5F45E6A0(MFC42.DLL+05E6A0)
[vtbl+40]GetInterfaceMap         =00401F60->5F414CC3(MFC42.DLL+014CC3)
[vtbl+44]GetEventSinkMap         =00401F5A->5F45E668(MFC42.DLL+05E668)
[vtbl+48]OnCreateAggregates      =00401F54->5F401958(MFC42.DLL+001958)
[vtbl+4C]GetInterfaceHook        =00401F4E->5F4103E8(MFC42.DLL+0103E8)
[vtbl+50]GetExtraConnectionPoints=00401F48->5F4103E8(MFC42.DLL+0103E8)
[vtbl+54]GetConnectionHook       =00401F42->5F4103E8(MFC42.DLL+0103E8)
[vtbl+58]PreSubclassWindow       =00402086->5F404448(MFC42.DLL+004448)
[vtbl+5C]Create                  =00402080->5F40AA5F(MFC42.DLL+00AA5F)
[vtbl+60]DestroyWindow           =0040207A->5F4057B8(MFC42.DLL+0057B8)
[vtbl+64]PreCreateWindow         =00402074->5F40C22D(MFC42.DLL+00C22D)
[vtbl+68]CalcWindowRect          =0040206E->5F40C3ED(MFC42.DLL+00C3ED)
[vtbl+6C]OnToolHitTest           =00402068->5F45C2E3(MFC42.DLL+05C2E3)
[vtbl+70]GetScrollBarCtrl        =00402062->5F4103E8(MFC42.DLL+0103E8)
[vtbl+74]WinHelpA                =0040205C->5F45C5BC(MFC42.DLL+05C5BC)
[vtbl+78]ContinueModal           =00402056->5F414BFE(MFC42.DLL+014BFE)
[vtbl+7C]EndModalLoop            =00402050->5F414C41(MFC42.DLL+014C41)
[vtbl+80]OnCommand               =0040204A->5F402A8B(MFC42.DLL+002A8B)
[vtbl+84]OnNotify                =00402044->5F403290(MFC42.DLL+003290)
[vtbl+88]GetSuperWndProcAddr     =0040203E->5F404444(MFC42.DLL+004444)
[vtbl+8C]DoDataExchange          =004013F0(mfcspy.exe+0013F0)
[vtbl+90]BeginModalState         =00401BE0(mfcspy.exe+001BE0)
[vtbl+94]EndModalState           =00401BF0(mfcspy.exe+001BF0)
[vtbl+98]PreTranslateMessage     =00402038->5F414B8F(MFC42.DLL+014B8F)
[vtbl+9C]OnAmbientProperty       =00402032->5F45E09F(MFC42.DLL+05E09F)
[vtbl+A0]WindowProc              =0040202C->5F401ADD(MFC42.DLL+001ADD)
[vtbl+A4]OnWndMsg                =00402026->5F401B21(MFC42.DLL+001B21)
[vtbl+A8]DefWindowProcA          =00402020->5F401EDD(MFC42.DLL+001EDD)
[vtbl+AC]PostNcDestroy           =0040201A->5F404448(MFC42.DLL+004448)
[vtbl+B0]OnChildNotify           =00402014->5F4022BC(MFC42.DLL+0022BC)
[vtbl+B4]CheckAutoCenter         =0040200E->5F40688B(MFC42.DLL+00688B)
[vtbl+B8]IsFrameWnd              =00402008->5F40196C(MFC42.DLL+00196C)
[vtbl+BC]SetOccDialogInfo        =00402002->5F45D6FC(MFC42.DLL+05D6FC)
[vtbl+C0]DoModal                 =00401FD2->5F414E8E(MFC42.DLL+014E8E)
[vtbl+C4]OnInitDialog            =00401430(mfcspy.exe+001430)
[vtbl+C8]OnSetFont               =00401FF6->5F405ABF(MFC42.DLL+005ABF)
[vtbl+CC]OnOK                    =00401660(mfcspy.exe+001660)
[vtbl+D0]OnCancel                =00401FEA->5F45D90F(MFC42.DLL+05D90F)
[vtbl+D4]PreInitDialog           =00401FE4->5F404448(MFC42.DLL+004448)

message map=00403498(mfcspy.exe+003498)
msg map entries at 004033D8(mfcspy.exe+0033D8)
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=00401840(mfcspy.exe+001840)
OnMsg:WM_MOUSEMOVE(0200),func=004019C0(mfcspy.exe+0019C0)
OnMsg:0401,func=004017B0(mfcspy.exe+0017B0)


// Help Form
HWND: 000D01EA
class:0012FB5C(CDialog,size=0x60)
CDialog:CWnd:CCmdTarget:CObject

[+00]vtbl address=004034A0(mfcspy.exe+0034A0)
[+04]CCmdTarget::m_dwRef=1
[+08]CCmdTarget::m_pOuterUnknown=00000000
[+0C]CCmdTarget::m_xInnerUnknown=00000000
[+10]CCmdTarget::m_xDispatch.m_vtbl=00000000
[+14]CCmdTarget::m_bResultExpected=00000001
[+18]CCmdTarget::m_xConnPtContainer.m_vtbl=00000000
[+1C]CCmdTarget::m_pModuleState=00135FF0
[+20]CWnd::m_hWnd=000D01EA
[+24]CWnd::m_hWndOwner=00000000
[+28]CWnd::m_nFlags=00000018
[+2C]CWnd::m_pfnSuper=77E0D439
[+30]CWnd::m_nModalResult=FFFFFFFF
[+34]CWnd::m_pDropTarget=00000000
[+38]CWnd::m_pCtrlCont=00000000
[+3C]CWnd::m_pCtrlSite=00000000
[+40]CDialog::m_nIDHelp=00000064
[+44]CDialog::m_lpszTemplateName=00000064
[+48]CDialog::m_hDialogTemplate=00000000
[+4C]CDialog::m_lpDialogTemplate=00000000
[+50]CDialog::m_lpDialogInit=00000000
[+54]CDialog::m_pParentWnd=(CWnd*)00000000
[+58]CDialog::m_hWndTop=(HWND)00000000
[+5C]CDialog::m_pOccDialogInfo=00000000

[vtbl+00]GetRuntimeClass         =00402098->5F4064BC(MFC42.DLL+0064BC)
[vtbl+04]destructor              =004012E0(mfcspy.exe+0012E0)
[vtbl+08]Serialize               =00401D00(mfcspy.exe+001D00)
[vtbl+0C]AssertValid             =00401240(mfcspy.exe+001240)
[vtbl+10]Dump                    =00401D00(mfcspy.exe+001D00)
[vtbl+14]OnCmdMsg                =00402092->5F4064EB(MFC42.DLL+0064EB)
[vtbl+18]OnFinalRelease          =0040208C->5F418D39(MFC42.DLL+018D39)
[vtbl+1C]IsInvokeAllowed         =00401F90->5F4187CB(MFC42.DLL+0187CB)
[vtbl+20]GetDispatchIID          =00401F8A->5F4103E8(MFC42.DLL+0103E8)
[vtbl+24]GetTypeInfoCount        =00401F84->5F40196C(MFC42.DLL+00196C)
[vtbl+28]GetTypeLibCache         =00401F7E->5F40196C(MFC42.DLL+00196C)
[vtbl+2C]GetTypeLib              =00401F78->5F45E645(MFC42.DLL+05E645)
[vtbl+30]GetMessageMap           =00401320(mfcspy.exe+001320)
[vtbl+34]GetCommandMap           =00401F72->5F45E6A6(MFC42.DLL+05E6A6)
[vtbl+38]GetDispatchMap          =00401F6C->5F45E662(MFC42.DLL+05E662)
[vtbl+3C]GetConnectionMap        =00401F66->5F45E6A0(MFC42.DLL+05E6A0)
[vtbl+40]GetInterfaceMap         =00401F60->5F414CC3(MFC42.DLL+014CC3)
[vtbl+44]GetEventSinkMap         =00401F5A->5F45E668(MFC42.DLL+05E668)
[vtbl+48]OnCreateAggregates      =00401F54->5F401958(MFC42.DLL+001958)
[vtbl+4C]GetInterfaceHook        =00401F4E->5F4103E8(MFC42.DLL+0103E8)
[vtbl+50]GetExtraConnectionPoints=00401F48->5F4103E8(MFC42.DLL+0103E8)
[vtbl+54]GetConnectionHook       =00401F42->5F4103E8(MFC42.DLL+0103E8)
[vtbl+58]PreSubclassWindow       =00402086->5F404448(MFC42.DLL+004448)
[vtbl+5C]Create                  =00402080->5F40AA5F(MFC42.DLL+00AA5F)
[vtbl+60]DestroyWindow           =0040207A->5F4057B8(MFC42.DLL+0057B8)
[vtbl+64]PreCreateWindow         =00402074->5F40C22D(MFC42.DLL+00C22D)
[vtbl+68]CalcWindowRect          =0040206E->5F40C3ED(MFC42.DLL+00C3ED)
[vtbl+6C]OnToolHitTest           =00402068->5F45C2E3(MFC42.DLL+05C2E3)
[vtbl+70]GetScrollBarCtrl        =00402062->5F4103E8(MFC42.DLL+0103E8)
[vtbl+74]WinHelpA                =0040205C->5F45C5BC(MFC42.DLL+05C5BC)
[vtbl+78]ContinueModal           =00402056->5F414BFE(MFC42.DLL+014BFE)
[vtbl+7C]EndModalLoop            =00402050->5F414C41(MFC42.DLL+014C41)
[vtbl+80]OnCommand               =0040204A->5F402A8B(MFC42.DLL+002A8B)
[vtbl+84]OnNotify                =00402044->5F403290(MFC42.DLL+003290)
[vtbl+88]GetSuperWndProcAddr     =0040203E->5F404444(MFC42.DLL+004444)
[vtbl+8C]DoDataExchange          =00401310(mfcspy.exe+001310)
[vtbl+90]BeginModalState         =00401BE0(mfcspy.exe+001BE0)
[vtbl+94]EndModalState           =00401BF0(mfcspy.exe+001BF0)
[vtbl+98]PreTranslateMessage     =00402038->5F414B8F(MFC42.DLL+014B8F)
[vtbl+9C]OnAmbientProperty       =00402032->5F45E09F(MFC42.DLL+05E09F)
[vtbl+A0]WindowProc              =0040202C->5F401ADD(MFC42.DLL+001ADD)
[vtbl+A4]OnWndMsg                =00402026->5F401B21(MFC42.DLL+001B21)
[vtbl+A8]DefWindowProcA          =00402020->5F401EDD(MFC42.DLL+001EDD)
[vtbl+AC]PostNcDestroy           =0040201A->5F404448(MFC42.DLL+004448)
[vtbl+B0]OnChildNotify           =00402014->5F4022BC(MFC42.DLL+0022BC)
[vtbl+B4]CheckAutoCenter         =0040200E->5F40688B(MFC42.DLL+00688B)
[vtbl+B8]IsFrameWnd              =00402008->5F40196C(MFC42.DLL+00196C)
[vtbl+BC]SetOccDialogInfo        =00402002->5F45D6FC(MFC42.DLL+05D6FC)
[vtbl+C0]DoModal                 =00401FD2->5F414E8E(MFC42.DLL+014E8E)
[vtbl+C4]OnInitDialog            =00401FFC->5F4063F4(MFC42.DLL+0063F4)
[vtbl+C8]OnSetFont               =00401FF6->5F405ABF(MFC42.DLL+005ABF)
[vtbl+CC]OnOK                    =00401FF0->5F414C05(MFC42.DLL+014C05)
[vtbl+D0]OnCancel                =00401FEA->5F45D90F(MFC42.DLL+05D90F)
[vtbl+D4]PreInitDialog           =00401FE4->5F404448(MFC42.DLL+004448)

message map=004033D0(mfcspy.exe+0033D0)
msg map entries at 004033B8(mfcspy.exe+0033B8)


2.用DeMfc lite分析
ControlName      ControlID       Meaning            MessageMap Ptr
ID_Help          0000E146    WM_COMMAND    	00401ED0 
CDialog          00000000    WM_SYSCOMMAND    	00401520 
CDialog          00000000    WM_PAINT    	           004015A0
CDialog          00000000    WM_QUERYDRAGICON        00401650
unknown          000003E9    WM_COMMAND    	00401670
CDialog          00000000    WM_LBUTTONUP    	00401840    
CDialog          00000000    WM_MOUSEMOVE    	004019C0    
CDialog          00000000    WM_MOUSEMOVE    	004017B0    
CDialog          00000000    WM_SETCURSOR    	00401C70    
CDialog          00000000    WM_LBUTTONDOWN    	00401C80    
CDialog          00000000    WM_LBUTTONUP    	00401CC0    
CDialog          00000000    WM_LBUTTONUP    	00000000    
CDialog          00000000    WM_MOVE    	  	00000000    
CDialog          00000000    WM_CREATE    	  	00000000    
CDialog          00000000    WM_MOVE    	  	00000000    
CDialog          00000000    WM_CREATE    	  	00000000    
CDialog          00000000    WM_CREATE    	  	00000000    
CDialog          00000000    WM_DESTROY    	00000000    
CDialog          00000000    WM_CREATE      	00000000    
CDialog          00000000    WM_CREATE    	  	00000000
   

对比显示,你还是漏了一些Message,比如
CDialog          00000000    WM_SETCURSOR            00401C70
2005-1-22 10:52
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
54
最初由 goldenegg 发布

我看了一下,初步可以判定这个版本根本没有实现注册功能,只是个功能不全的demo版,应该是你付费他就会给你个完整版本的那种.你可以仔细研究一下.另外,如果不是demo版,那连壳都不加也真够大胆的


哦,是这样的阿.
我是直接破解他软件本身了,把所有的限制都去掉了,本来说想看看他的注册机制的.
2005-1-22 11:10
0
雪    币: 216
活跃值: (370)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
55
最初由 小楼 发布
我也写了一个东西DeMfc lite,只是半成品。我采用的是静态分析的方法。对比的结果我觉得,你的根据MessageMap Pump的方法可能漏了一些MessageMap

下面是分析你的MfcSpy.exe的结果
1.用MfcSpy分析
[code]
........

没有漏,我的mfcspy只到窗口层的,如果有两个dlg,
那就不好意思你就必须spy两次。

你的那个东东看样子是搜索整个代码,这样把一些其它的也搞出来了。
比如就你说的那个WM_SETCURSOR,这是那个放大镜框的消息表,不是dialog的!
如果我把它显示出来了,那就反而错了。

因为我对那个放大镜框做了特殊限制
你可以打开两个mfcspy,用一个查另一个的放大镜框
你就看到了。
2005-1-22 11:40
0
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
56
我怎么今天才看到啊
牛啊!
很不错的工具,把MFC都揪出来了。不过,好像在混合编程的情况下就认不到了。
端个凳子,坐下的先。
2005-2-17 22:46
0
雪    币: 213
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
57
很好的东西
不过mfc写的破东西本身vc就附带了mfc的源代码
分析起来难度也不算特别大
不过这个工具的确很方便
2005-2-19 09:21
0
雪    币: 216
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
58
最初由 great123 发布
在MFC的dll里面我直接下test的code段的内存访问断点,F9运行直接断在函数的入口!!!
.......

直接下test的代码段的内存访问断点,用OD怎么操作?
2005-2-19 23:39
0
雪    币: 229
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
59
高!!不过对于MFC7的东西好像不行
2005-2-23 13:58
0
雪    币: 148
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
60
下载了, 试试看.
2005-3-28 11:34
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
61
有没有人有兴趣做Delphi或者BCB编译的程序下类似的工具啊
2005-4-10 10:47
0
雪    币: 415
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
62
好像在我win2ksp4上没有反应,不知道怎么了
2005-5-21 10:03
0
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
63
看了前面这么多朋友的评论,下过来试试
2005-6-9 19:21
0
雪    币: 405
活跃值: (49)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
64
最初由 hj001 发布
好像在我win2ksp4上没有反应,不知道怎么了


楼上的,你的系统可能有问题了,我的Win2k+sp4用的很好,没出现什么问题
楼主的这个工具真方便,省了很多事!
希望能兼容更多的程序
2005-6-10 10:04
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
65
对,就是7.1的还不行。呵呵,有的时候会让程序退出。但是确实一个非常不错的东西。呵呵
2005-6-11 22:08
0
雪    币: 210
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
66
支持斑竹!谢谢开源!支持开源
2005-7-5 15:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
67
真是精品!用起来很方便
2005-7-19 11:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
68
不错,学习了
2005-8-14 20:19
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
69
2005-8-19 17:54
0
雪    币: 13097
活跃值: (4097)
能力值: ( LV15,RANK:1673 )
在线值:
发帖
回帖
粉丝
70
下载试了一下,果然是好东东.
明天再慢慢研究...
2005-9-21 02:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
71
好东西,谢谢分享!正在学习编程,很需要!
2005-9-25 02:22
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
72
里面的好些看不懂. 版主干脆科普算了,加一点注释吧!! 谢谢!

好东西!! 顶穿!!
2005-10-10 20:40
0
雪    币: 2003
活跃值: (61)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
73
好东西 收一个
2005-10-12 23:11
0
雪    币: 216
活跃值: (70)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
74
很好用 收了
2005-10-23 12:10
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
75
这么好的东西,先下来试试,谢谢提供!
2005-12-12 19:55
0
游客
登录 | 注册 方可回帖
返回
//