190326 逆向-MFC逆向技巧

MFC是微软的基础类库,用于封装Windows API并提供应用程序框架。尽管在现代开发中使用较少,但在某些场景如CTF挑战中仍有出现。MFC采用消息映射表处理消息,逆向时可通过字符串搜索、API断点和RTTI等方式找到切入点。xspy和spy++等工具能帮助分析MFC程序。
摘要由CSDN通过智能技术生成

MFC

简介

微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
–百度百科

虽然由于实际应用中MFC似乎即将被淘汰,(据说微软放弃更新十几年,但从版本号和种种迹象来看似乎是还在不断更新的,VS2015中的MFC已经更新到了14.0版本),但偶尔还是会出现这一类的GUI的
而且由于相对于原生WindowsGUI程序的主函数被直接作为参数来说,MFC将各个触发函数放置在消息映射表里,所以相对有一些难度 因此CTF中有时会出现MFC类的题目、也需要做一些知识储备

基本机制

MFC的思想是所有类继承自基类CObject,每个类都拥有一个消息映射表和各自的成员
通常开发者自定义的窗口是继承自CDialog的,整个继承链为

MyDialog->CDialog->CWnd->CCmdTarget->CObject

当遇到消息时,会从本类的消息映射表中匹配处理对应消息的函数,如果没有找到则去父类的消息映射表中寻找,以此类推
如果直到CObject类的消息映射表寻找完都没有函数处理消息,则将消息放入默认处理函数中处理(与Windows32API的思想一致)

消息映射表是如下结构

首先关于 [评价可免费] 的严重声明: 一、评价=评论加评价(评星星); 二、评价必须是下载完了该资源后的评价,没下载就评论无效; 三、如果正确评价了,返还积分可能需要等等,系统需要反应下。呵呵 评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 MFC 程序逆向 – 消息篇(上) 作者:szdbg Email:szdbg@sina.com 前言: 记得前一段时间,我刚接触软件破解和逆向这一行时,对于一些软件不知从何处跟踪按钮消息,试了好多方法,就是断 不下来,在系统模块中经常转得晕头转向,而一无所获。 MFC 程序是一种常见类型的程序,我静下心来,潜心研究了一下MFC 消息流程。弄清原委之后,一切豁然开朗,发现跟 踪MFC 程序和消息处理原来是如此。。。,跟踪按钮事件处理也由此变得特别简单。 于是,我将这些研究整理成文,以备后忘。并希望大家有所帮助,失误之处,请高手指正。 的确, .Net之类的程序必定是大势所趋,不过,就目前来说,MFC程序在软件市场还是占有重要的一席之地,所以,了解它,对于逆向和破解此类程序还是很有必要的. MFC之所以显的复杂,就在于它隐藏了它的消息的处理机制,可以说, 程序员基本上不需要懂得它的消息处理过程,就可以写出一套满足应用的软件来.这有好有坏,好的是大大简化了程序员写程序的过程,坏的一方面是,给一般程序员留下了一个迷团: 我只知道这样做,而不知道为什么这样做.心里老是觉得不踏实.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值