首页 > 其他分享 >MFC静态反编译GetMessageMap相关查找方法

MFC静态反编译GetMessageMap相关查找方法

时间:2023-10-14 15:33:51浏览次数:55  
标签:反编译 MFC GetMessageMap MSGMAP WM UINT ENTRY AFX

MFC中
GetMessageMap包含对多数消息处理的结构, 界面菜单,按钮都在这, 找到GetMessageMap很关键
struct AFX_MSGMAP_ENTRY
{
UINT nMessage; // windows message
UINT nCode; // control code or WM_NOTIFY code
UINT nID; // control ID (or 0 for windows messages)
UINT nLastID; // used for entries specifying a range of control id's
UINT_PTR nSig; // signature type (action) or pointer to message #
AFX_PMSG pfn; // routine to call (or special value)
};
struct AFX_MSGMAP
{
const AFX_MSGMAP* (PASCAL* pfnGetBaseMap)();
const AFX_MSGMAP_ENTRY* lpEntries;
};
这个相关结构就是 GetMessageMap 相关的主要数据

  1. 在OnPaint函数一般会调用 CPaintDC::~CPaintDC, 对话框还有 DrawIcon, 从这特征找到OnPaint, 然后找到 AFX_MSGMAP_ENTRY
  2. 搜索WM_COMMAND: 0x111, 一个地方数据出现多个, 也可能是AFX_MSGMAP_ENTRY
  3. 搜索CWnd::OnDestroy的引用, 一般窗体的MSGMAP会有 WM_DESTROY, 函数会调用CWnd::OnDestroy, 或直接转跳
  4. 搜索WM_TIMER, 相关序列前5个一起搜, <WM_TIMER, 0, 0, 0, 0Dh, offset OnTimer>, 这个参数AfxSig不同版本不一样会有些不好用
  5. 找到CDialog::CDialog 再找到 CDialog::`vftable', 其中 CCmdTarget::GetTypeLib的下一个函数就是 GetMessageMap

标签:反编译,MFC,GetMessageMap,MSGMAP,WM,UINT,ENTRY,AFX
From: https://www.cnblogs.com/zzz3265/p/17764216.html

相关文章

  • Cython加密python代码防止反编译
    本方法适用于Linux环境下:1.安装库Cythonpip3installCython==3.0.0a10 2.编写待加密文件:hello.pyimportrandomdefac():i=random.randint(0,5)ifi>2:print('success')else:print('failure') 3.编写加密脚本import......
  • windows之MFC进度条
    windows之MFC进度条创建UI线程创建线程类在vsstudio2019中按快捷键ctrl+shift+x弹出类向导,在类向导中添加MFC类,选择父类为CWinThread。定义类名称点击确定即可。关联该UI线程对应的对话框BOOLCProgressThread::InitInstance(){CProgressDlgdlgprogress;......
  • 【关于运行程序时提示找不到mfc140.dll文件的解决办法】
    问题现象: 方法一:下载.dll修复工具使用修复工具对.dll文件进行修复。(下载麻烦,一般还要交钱,不建议) 方法二:Windows系统文件检查功能管理员权限打开命令提示符(Win+R,按下回车键进入CMD界面)输入"sfc/scannow",然后按下回车键扫描。扫描完成后,对电脑关机重启。(基本没什么用,可以试......
  • 基于MFC框架的计算器小程序
    MFC介绍:MFC(MicrosoftFoundationClasses)是微软公司开发的一组C++类库,旨在简化Windows应用程序的开发。它提供了一系列用于创建和管理图形用户界面(GUI)的类和函数,为开发人员提供了丰富的工具和资源,用于构建功能强大的Windows应用程序。我使用VisualStudio2022的MFC模板开发的我......
  • Windows 10 VS2015旧项目缺少MFC42D.DLL, MFCD42D.DLL, mfco42d.dll, MSVCP60D.DLL和M
    文章目录问题解决参考问题在Windows10中的VS2015找开旧项目,由于缺少MFC42D.DLL,MFCD42D.DLL,mfco42d.dll,MSVCP60D.DLL和MSVCRTD.DLL,无法调试并运行程序,进行了解决。解决下载MFC42D.DLL,MFCD42D.DLL,mfco42d.dll,MSVCP60D.DLL和MSVCRTD.DLL这些DLL文件,旧系统中是可以放在......
  • .NET应用如何防止被反编译
    思维导航前言.NET应用如何防止被反编译三款免费的.NET混淆工具推荐ConfuserEx.NET混淆工具安装使用ConfuserEx工具混淆.NETFx .dll文件使用ConfuserEx工具混淆.NETFx 混淆.exe文件加入DotNetGuide技术交流群前言前段时间分享了两篇关于.NET反编译相关的文章,然......
  • VC++ MFC 编程--CMap的使用
    本文翻译自: CMapHow-to-CodeProject介绍像我这样的程序员,在CMap之前学习了STL::map,总是认为CMap很难使用,并且总是尝试以STL::map的方式使用CMap。在本文中,我将解释CMap,以及如何将它用于您自己的自定义类。在本文的最后,我将展示一个如何正确使用CMap与CString*的例子(注意,我......
  • .NET应用如何防止被反编译
    前言前段时间分享了两篇关于.NET反编译相关的文章,然后文章留言区就有小伙伴提问:如何防止被反编译?因此本篇文章我们就来讲讲.NET应用如何防止被反编译。.NET反编译相关的文章可以看如下文章:4款免费且实用的.NET反编译工具.NET反编译神器ILSpy怎么用?.NET应用如何防止被反编译......
  • VS 2017 MFC开发最化小安装
    适用范围用于仅开发调试C++与MFC程序且硬盘空间不够的用户。安装步骤从vs官网找到在线安装器exe,记住选择15.0版本在组建选择中,按照如下进行选择。安装后启动即可。......
  • 使用idea自带的反编译工具 [FernFlower]
    终端直接输入命令java-cp参数1org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler-dgs=true参数2参数3参数说明:参数1。IDEA安装目录下的反编译插件“java-decompiler.jar”所在路径,需要加上双引号。示例:"E:\IntelliJIDEA2020.2.2\plugins\java-decomp......