使用IDA定位基于MFC的CrackMe的按钮函数-----实践篇(二)

第5章 IDA Pro 破解实战 第5章 IDA Pro 破解实战 1、工具IDA Pro 6.6版本   1、定位关键码   1)      搜索特殊字符串 首先按下快捷键CTRL+S 打开段选择对话框,双击STRINGS段跳转到字符串段,然后按下ALT+T,打开文本搜索对话框,在String旁边的文本框输入要搜索的字符串后点击OK按钮,稍等片刻就会定位到搜索结果。 2)      搜索关键API 首先按下快捷键 阅读详情

    接下来我将介绍另外两种方法来定位消息映射表

搜索控件ID

     如果控件的资源ID比较特殊,那么我们可以通过直接搜索立即数的方式来定位,什么叫比较特殊的资源ID呢,就是搜索后不会出现一大片的.rdata的数据~

     第一步依然是使用Resource Hacker找到对应按钮的资源ID

    然后将程序载入IDA,然后搜索立即数1000

    我们要找到.rdata中指令为数据,并且数值是1000(十六进制为0x3E8)的地址,注意这边只会显示一个字节db,所以是0x3E8的E8,双击跟进是不是一下子就到了消息映射表了?只要把当前的消息映射表用上一篇的方法转换下,很快就能定位到对应的按钮处理函数了~

找虚表

    怎么找类的虚表呢?很简单,随便找个虚函数,查看交叉引用就好了,由于所有的消息映射表只是整个程序的消息映射图的一个子节点,我们找到一个消息映射图,通过上一节找子类消息映射图的方法就能找到其他的消息映射表。

    我一般都是选择DoModel函数,因为这个函数离我们的消息映射表比较近,而且这个函数比较好找,在函数窗口找到DoModel函数,不是CDialog类的也无所谓,然后单击这个函数的交叉引用,就可以跳转到类的虚表了

    然后往下翻动,就能找到消息映射表结构了,然后通过交叉引用先找到CDialog类的消息映射表(消息映射表前面有些虚函数或者类名会提示这里应该是什么类的消息映射表的),然后再通过交叉引用找到子类的消息映射表。注意这边需要往下翻很久,前面虽然也有像消息映射的结构,但是你会发现有很多类名,所以这个是RTTI结构,并不是消息映射表。

   找到消息映射表,我们不仅可以知道按钮对应的处理函数,我们还可以知道CrackMe作者有没有处理其他的特殊消息~

160个CrackMe之108 mfc程序 寻找按钮事件,代码还原(下) ·分析该CrackMe按钮事件 这个check就是个按钮,现在用visual studio提供的工具看看这个按钮id ·选择自己的Spy++(不会用的话百度查一下) 找到check按钮id是1 ·那该程序的检查按钮事件就为 AFX_MSGMAP_ENTRY 按钮;按钮。nMessage = WM_COMMAND ; 按钮。nCode = BN_CLICKED ; 按钮。nID = 1 ; 按钮。nLastID = 1 ; 按钮。nSig = AfxSigCmd_v ; 阅读详情

相关推荐

MFC程序逆向分析实战:从黑盒到算法还原的完整路径

在软件安全、遗留系统维护与算法研究领域,逆向工程是一项关键技术,它通过对编译后二进制程序的分析,揭示其内部逻辑与实现原理。其核心价值在于理解闭源软件行为、进行安全审计、漏洞挖掘以及算法还原。尤其在Windows桌面应用场景中,大量遗留系统基于微软基础类库(MFC)开发,这些程序常因源码缺失而成为“黑盒”。本文聚焦于**MFC程序**的**逆向分析**,系统拆解其特有挑战,如庞大的框架代码(“噪音”)、面向对象与消息驱动机制带来的复杂性。通过结合静态分析(如使用IDA Pro的FLIRT签名库过滤框架函数)与

weixin_33743248的博客 340

如何在IDA中找到MFC程序的消息处理函数

比起用Win32SDK写的程序,要分析MFC应用程序要麻烦不少。在前者,只要找到注册窗口类的地方就知道其WinProc的位置。那里是程序的控制中心,只要顺藤摸瓜就可以找到你感兴趣的地方。对于用MFC写的程序,这一切都变得复杂起来了。这时,所有的消息都是通过一套复杂的机制来完成分发的。他们是通过分发数据表来找到最终函数地址的. 详细请参阅MFC的源代码。 常见的消息分发数据是由以下的宏来生成的

anhkgg的专栏 4741

Resource Hacker资源编辑与逆向分析实战指南

Resource Hacker 是一款功能强大的 Windows 资源编辑工具,专为开发者、逆向工程师及界面定制爱好者设计。它支持对 EXE、DLL、OCX 和 RES 等多种 Windows 可执行文件格式中的资源进行查看、修改、添加和删除操作。其核心功能包括:资源浏览:支持查看图标、菜单、对话框、字符串表、位图等多种资源类型;资源编辑:可直接在图形界面中修改资源内容,如替换图标、调整菜单项;资源提取与保存:将资源导出为独立文件,便于分析或复用;资源编译与反编译。

weixin_30205153的博客 2348

IDA Pro 反汇编器使用详解,适合逆向新人和老人的权威指南(一)

IDA Pro 反汇编器使用详解,适合逆向新人和老人的权威指南(一)

Sciurdae的博客 2万+

6轴机械臂(拟人臂+球形腕(三轴相交于一点))正逆运动学求解

1、DH坐标下机械臂参数 theta=[pi/10,pi/2,pi/4,-pi/4,pi/4,-pi/8];%关节角度 a=[0, 0.260, 0.025, 0, 0, 0];%连杆长度 d=[0, 0, 0, 0.280, 0, 0.072];%偏移距离 alpha=[pi/2, 0, pi/2, -pi/2 , pi/2, 0];%RBR型6轴机械臂 使用...

qq_33374294的博客 7883

从部署到养成:Hermes智能体接入DeepSeek与微信机器人的完整实战指南

智能体(Agent)正成为大模型从“对话”走向“行动”的关键形态。它通过拆解指令、调用工具、执行任务,让AI真正参与工作流。Hermes作为可本地部署的开源智能体框架,支持接入DeepSeek等主流大模型,并提供网关、工具调用、记忆管理等模块化能力。从Docker容器部署到微信机器人桥接,从自动化定时任务到Computer Use桌面控制,Hermes将个人助理从概念落地为可运行的工程系统。本文基于真实实践,梳理架构原理、部署流程、API配置与高频故障排查,为技术玩家提供一套从零到一的上手指南。

weixin_29045001的博客 263

IDA Pro反编译器的使用

IDA Pro反编译器的使用

小李的便利店 3764

【实战】S7-PLCSIM Advanced V3.0 授权问题排查指南(Error Code:-30与LicenseNotFound深度解析)

本文深度解析S7-PLCSIM Advanced V3.0启动时遇到的Error Code:-30与LicenseNotFound报错问题。文章提供了一套系统性的排查指南,从检查WinPcap驱动兼容性、确保Automation License Manager服务运行,到正确安装浮动授权以及清理系统残留缓存,逐步解决授权链条中的各个环节故障,帮助用户彻底解决仿真环境启动失败的问题。

weixin_29185167的博客 721

使用IDA对MFC寻找按钮处理事件

由于我练习的都是MFC程序,在寻找按钮事件的时候,费了老鼻子劲了,当初说的,根据DispatchMessage,TranslateMessage,下条件断点神马的,笔者,试了又试,在里面消 息转了又转,就是出不来,放下了一段时间,但是不甘心,最后找到了一篇很好的文章点击打开链接,让我有了很好的启发,对于自己做的小程序而言,已经足够了,现在说下, 我自己写的这篇水平实在有些哇,高手不要见笑啊,好

dasgk的专栏 5683

基于强化学习方法的PID参数整定

前言 PID控制器在工业界应用非常广泛,但是PID的参数调节一般需要人工根据经验法来试。对于有经验的工程师来说,一般试几次就可以获得满足调节的参数。然而对于新手工程师却很难确定一套比较好的参数。 这里我们采用强化学习的方法来调节PID参数。 这个例子展示了如何使用双延迟深度确定性策略梯度(TD3:twin-delayed deep deterministic policy gradient)强化学习算法来调整PI控制器。整定控制器的性能与使用Control System Tuner app整定的控制器的性能

weixin_42188287的博客 2万+

【AI绘图进阶指南】Latent Diffusion Model核心组件解析——从理论到实践

本文深入解析Latent Diffusion Model(LDM)的核心组件,包括Autoencoder、Denoiser和Conditioning Encoder的工作原理及实践应用。通过理论结合代码示例,揭示LDM如何高效处理图像生成任务,并优化AI绘图流程,为开发者提供从理论到实践的进阶指南。

weixin_42628941的博客 387

使用IDA定位基于MFC的CrackMe的按钮函数-----实践篇(一)

针对上篇文章,我将分别使用三种方法来定位

6175

BAT031:按列表名单将路径a下的文件夹批量剪切到路径b

摘要:按列表名单将路径a下的文件夹批量剪切到路径b。

qq_31762031的博客 1220

使用IDA定位基于MFC的CrackMe的按钮函数-----理论篇

MFC程序不同于普通的windows程序,由于使用了框架代码,我们很难

3586

[Python图像处理] 二.OpenCV+Numpy库读取与修改像素

该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~ 同时推荐作者的C++图像系列知识: [数字图像处理] 一.MFC详解显示BMP格式图片 [数字图像处理] 二.MFC单文档分...

杨秀璋的专栏 3万+

链接文件及功能安全:Hightec如何将Flash驱动放进RAM

Fls本身是无法操作自身的,犯冲突。Fls_WriteCmdCycles (预留300字节)与 Fls_EraseCmdCycles(预留200字节) 函数在执行之前将会Copy进RAM,Fls本身是不能操作Fls本身的,除非把最底层的驱动函数防止在RAM或者其他的Flash里面,假设Flash放置在PF0可以操作PF1。英飞凌的驱动有个规定写指令预留300字节,擦除指令预留200字节。

梦想技术家 2142

网络安全实验02:一个CrackMe

目录 01.基于MFC的简单CrackMe代码 代码: 界面: 效果: 02.IDA解析 03.后记 01.基于MFC的简单CrackMe代码 代码: // MFCApplication1Dlg.cpp: 实现文件 // #include "stdafx.h" #include "MFCApplication1.h" #include "MFCApplication1...

Krumitz的博客 988

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

170916 逆向-WHCTF(BabyRe/CrackMe)

1625-5 王子昂 总结《2017年9月16日》 【连续第349天总结】 A. XCTF-Reverse B.CRACKME无壳,C++ 打开是一个简单的输入框和注册按钮 点击注册按钮会弹框“哎,注册码错了,你得换个新的哟!”IDA没有main函数,看起来是MFC写的 查找字符串、断GetDlgText等API都没有结果 说明字符串都被加密过了IDA逐个函数查找,发现有两个函数调用了

whklhhhh的博客 3928

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mfc 自定义消息处理_浅谈MFC类CrackMe中消息处理函数查找方法

最近一个学姐发给我了一份CrackMe希望我解一下,其中涉及到了MFC的消息函数查找的问题,就顺便以此为例谈一下自己使用的消息函数查找的方法。本人萌新,如果有任何错漏与解释不清的地方,欢迎各路大佬指正。这个CrackMe是一个典型的MFC类型的程序,其框体如下:一、目标以及方法首先我们确认我们的目标是找到两个"注册"按钮的对应消息处理函数,那么有什么手段可以达到我们的目标?在MFC中有一...

weixin_29695125的博客 459

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CrackMe练习136破解

160个CrackMe练习题第136题 Rith.1破解过程思路

游戏乐趣的博客 717

171114 逆向-以CM为例学习MFC机制

1625-5 王子昂 总结《2017年11月14日》 【连续第410天总结】 A. 谜之CrackMe B. 来源就不说啦,总之是个MFC程序,运行界面如下 可以看到没有确认按钮,一般来说是由定时器消息或Text内容改变消息触发Check函数确认无壳后拖入IDA查找字符串,轻松定位到sub_401CD0 但是向上查找交叉引用却发现落入一个偏移中,无从下手了 对其下断,进行动态调

whklhhhh的博客 645

MFC寻找按钮事件

[软件名称]: CRECKME 0 CRECKME 0 程序和分析源码.zip. [应用平台]:Win9X/NT/2000/XP [软件大小]:8K [破解声明]:为了检验自己的逆向破解能力,请求斑竹给个邀请码,鼓励我继续写下去。顺便感谢一下党,感谢国家,感谢我们家的曾曾。 [破解工具]:PEiD,IDA 5.5,PE Explore [备注] 破解软件来源于看雪论坛中的帖子 (本人

dasgk的专栏 2107

TCTF 2016 PC First

在遇到复杂的算法时,要善于用动静态结合的方式分析,采取先总体后细节的战术对目标程序进行逆向。在总体分析时,重点在于弄清楚算法的框架,哪里对输入进行了处理,哪里进行了验证。在分析细节时,要“大胆猜想,小心求证”,可以采用逐个击破的方式,比如先还原一个循环,写出逆向的代码,用同一个输入对比程序和逆向代码的输出以检验正确性。如果ida反编译出来的代码较为混乱和抽象,可以参考反汇编,对这些代码进行手动还原,还原时注意反汇编代码是以什么大小对数据进行操作的,是否考虑了符号、溢出等等。

静下心来,做好每一件事 202

逆向分析学习入门教程

转在于 逆向工厂(一):从hello world开始前沿从本篇起,逆向工厂带大家从程序起源讲起,领略计算机程序逆向技术,了解程序的运行机制,逆向通用技术手段和软件保护技术,更加深入地去探索逆向的魅力。一、程序如何诞生?1951年4月开始在英国牛津郡哈维尔原子能研究基地正式投入使用的英国数字计算机“哈维尔·德卡特伦”,是当时世界上仅有的十几台电脑之一。图中两人手持的“纸带”即是早期的程序,纸带通过是否

wang010366的专栏 4万+

如何快速掌握Delphi逆向工程:IDR反编译工具完整实战指南

在Windows软件开发领域,Delphi一直是企业级应用开发的重要工具。然而,当你需要分析Delphi编译的程序、恢复丢失的源代码或进行安全审计时,传统的逆向工程工具往往力不从心。IDR(Interactive Delphi Reconstructor)作为一款专业的**交互式Delphi反编译器**,专门为解决这些难题而生。这款开源工具能够处理从Delphi 2到Delphi XE4编译器生成

gitblog_00275的博客 145

Android动态方式破解apk进阶篇(IDA调试so源码)

一、前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为了安全或者效率问题,会把一些重要的功能放到native层,那么这样一来,我们前篇说到的Eclipse调试smali源码就显得很无力了,因为核心的都在native层,Android中一般native层...

weixin_30872671的博客 1539
上一篇: Linux内核学习笔记之磁盘I/O(十一)
下一篇: 使用IDA定位基于MFC的CrackMe的按钮函数-----实践篇(一)
银翼魔术师
博客等级 码龄17年 41粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值