动态调试中获取mfc程序的消息响应函数列表的思路
来源:互联网 发布:centos7和ubuntu 编辑:程序博客网 时间:2024/06/02 06:06
Debug版本:mfc42d.dll:5F4926BB B9 10484D5F mov ecx, offset _afxBaseModuleState5F4D4810->dword[1]即[5F4D4810]+4==&theApp5F4993E7 |. 8951 04 mov dword ptr [ecx+4], edx ; MFCTest.theAppedx==&theApp结论:CMFCTestApp theApp;的初始化函数中调用了004018A8 . B9 70684100 mov ecx, offset theApp004018AD . E8 F3F7FFFF call 004010A5......004010A5 $ /E9 86060000 jmp CMFCTestApp::CMFCTestApp其中又调用了00401752 |. E8 1B100000 call CWinApp::CWinApp ; jmp 到 MFC42D.#528因此theApp的地址实际上被硬编码在mfc程序的某个特定的初始化函数中,再传到mfc42d保存起来而这个初始化函数的地址在动态调试中可以通过MFC42D.#528下断再逆向推出;messageMap及_messageEntries存在于.rdata段004010BE . /E9 DD0D0000 jmp CMFCTestDlg::GetMessageMap除非在函数中用到messageMap,否则仅在GetMessageMap函数中存在硬编码(mov eax,#~~~~~~)[m_pMainWnd+0h]+30h==GetMessageMap即CObject::__vfptr[12]Release版本:mfc42.dll:6B730A3D 8906 mov dword ptr [esi], eax&_afxBaseModuleState==esi00400401 . E8 3E060000 call <jmp.&MFC42.#561>=>6B732E4E > 8BFF mov edi, edi结论:在动态调试中通过对MFC42.#561下断可以在ecx中得到&theAppm_pMainWnd==&theApp+20h然而在静态分析中由入口点函数中的00400C24 FF15 D80F4000 call dword ptr [<&MSVCRT.__getmainarg>; msvcrt.__getmainargs00400C2A |. 68 2C1B4000 push 00401B2C00400C2F |. 68 201B4000 push 00401B2000400C34 |. E8 A1000000 call <jmp.&MSVCRT._initterm>得到初始化函数数组,其中就包含theApp的初始化函数总结:theApp的初始化函数地址在.rdata段中且有重定位(如果存在)当vc6.0调试时类没有显示继承的成员信息的时候,清除一下重新编译全局变量和静态变量最初都是以硬编码的形式引出查找过程如下:Null=>theApp->m_pMainWnd->GetMessageMap=>messageMap->_messageEntries[]1.在动态调试中通过对MFC42.#561下断可以在ecx中得到&theApp2.m_pMainWnd==&theApp+20h3.[m_pMainWnd+0h]+30h==GetMessageMap4.在GetMessageMap函数中存在硬编码(mov eax,#~~~~~~)5._messageEntries==[messageMap+4h]
何时达到庖丁解牛的感觉就好了
现在感觉如果是动态链接的mfc程序,可以链接到自己改的mfc上面,想做什么都可以
另见:重新编译MFC
- 动态调试中获取mfc程序的消息响应函数列表的思路
- MFC中用户自定义消息的消息响应函数原型
- MFC中用户自定义消息及其响应函数的方法
- MFC图像控件的鼠标消息响应函数
- MFC框架中生成的消息响应函数,为什么最后都要调一下父类CView类的同名消息响应函数?
- MFC单文档程序添加消息映射和消息响应函数的问题
- WM_CREATE和WM_INITDIALOG消息响应函数之区别,以及MFC应用程序中处理消息的...
- WM_CREATE和WM_INITDIALOG消息响应函数之区别,以及MFC应用程序中处理消息的...
- WM_CREATE和WM_INITDIALOG消息响应函数之区别,以及MFC应用程序中处理消息的
- MFC自定义消息没有驱动消息响应函数的问题
- VC中添加WM_USER的消息响应函数
- 模仿MFC寻找消息响应函数指针的 核心 代码
- 手工添加MFC list control 的 双击消息响应函数
- 在MFC中动态按钮的创建与响应函数的生成
- 在MFC中动态按钮的创建与响应函数的生成
- MFC中添加自定义消息响应函数
- MFC中如何添加消息响应函数
- VS2008中MFC自定义消息响应函数
- linux下xargs命令用法详解
- linux top命令详解
- Linux 网络命令ifconfig 详解
- Java中的final,finally与finalize
- bash
- 动态调试中获取mfc程序的消息响应函数列表的思路
- windows API
- Vim之删除重复行
- WLAN驱动分析文档_gzc126_新浪博客
- wifi driver 学习笔记 - gangyanliang的专栏 - 博客频道 - CSDN.NET
- Linux 驱动分析--s3c6410 的SDIO驱动分析-bluedrum-ChinaUnix博客
- SDIO驱动总结 - Dybinx的专栏 - 博客频道 - CSDN.NET
- 变量和数据库事务
- activiti5 Junit4 Spring测试环境搭建