- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章-消息断点
本章将重点介绍Windows消息。
下面的引言简要的描述了Windows消息的
概念:
Windows消息被广泛用于各种事件的通知
上面,如果你想操作窗口或者控件 (UI元素
其实也是一种窗口,如:按钮,编辑框,工具
栏,树形控件等)的话,给它发送消息即可
。消息也可以来至于其他应用程序。你也
可以通过消息来实现系统通知,移动鼠标,
按下键盘上的某键等操作。
正如我们前面所讨论的,OD中大部分的API
函数我们可以使用普通CC断点来下断,但
是少数检测CC断点的情况,使用消息断点
会更加有效。消息断点在内核调试器Soft
ICE中也称为BMSG。
Windows窗口程序至少有一个消息循环,消
息循环有特定的API函数构成,最常见的是
GetMessage和DispatchMessage函数,有的
消息循环也会用到其他的API函数。想要
深入了解Windows的消息的话,可以参考下
面的链接中的教程”理解消息循环”(该
教程的中文版见附件):
/tutorial/message_
loop.html
让我们来看一个简单的例子:用OD加载Cru
eHead`s的CrackMe。
首先我们尝试第一种提取序列号的方法,
然后再来尝试消息断点提取序列号的方法
。我们来看看导入到程序的API函数,看看
有没有获取输入文本的函数。
在反汇编窗口中单击鼠标右键选择-Searc
h-Name(label) in current module。
获取编辑框中文本我们通常使用的API是G
etDlgItemTextA或者GetWindowTextA。当
然,也可以使用Unicode版的API函数GetDl
gItemTextW或者GetWindowTextW,再者,也
可以发送消息直接获取编辑框中文本。但
是,不要指望从GetDlgItemTextA或者GetW
indowTextA下手获取一些保护强度比较高
的编辑框控件中的文本。但是我们还是先
来看看这种方法吧。
尽管该列表中有GetDlgItemTextA,但是并
不意味着这个函数就是用来读取用户输入
的用户名和序列号的(可能仅仅是获取用
户输入的其他字段的)。有可能作者是故
意添加该函数来误导我们的。还是就是,
该API函数可以通过各种不同的方式来动
态加载,不一定要通过导入表。因此,可能
CrackMe真的使用的是GetDlgItemTextA,
但是我们在导入表中找不到这个函数。为
了不把问题复杂化,我们假设CrackMe就是
使用GetDlgItemTextA来获取编辑框中文
本的。
我们在命令栏中使用BP GetDlgItemTextA
设置断点:
或者
设置了断点以后,运行程序,输入用户名和
序列号:
单击OK,程序断在我们设置的断点处。
注意堆栈。
可以看到该函数有一个参数是缓冲区,编
辑框中的内容会被拷贝至该缓冲区。
所以,我们在数据窗口中定位到该缓冲区,
堆栈窗口中选中该缓冲区参数,单击鼠标
右键选择-Follow in Dump。或者在数据
窗口中单击鼠标右键选择-Goto-Expressi
on输入40218E。
现在缓冲区还是空的,因为该函数还没有
被执行。
我们通过选择主菜单项Debug-Execute ti
ll return来执行该函数。
现在缓冲区中保存了我们在注册窗口中输
入的用户名。
接着,按F9键运行程序,会再次触发我们的
断点。
现在,缓冲区参数的地址为40217E,我们在
数据窗口中转到这个地址:
我们依然选择主菜单项Debug-Execute ti
ll return,执行到返回。
这是我们输入的序列号。
整个过程想必很清楚了吧,为了找到正确
的序列号,在程序获取我们输入数据 (这里
是用户名和序列号)的时候应该让其中断
下来。更进一步的分析我们后面再讨论。
我们现在再通过消息断点来提取序列号。
很多有经验的程序员不使用API函数来获
取编辑框中文本,而是直接通过发送消息
来获取编辑框中的文本。
我们单击工具栏中 【B】按钮删除所有的
普通CC断点。
F9键将程序运行起来,打开注册窗口输入
用户名和序列号,但是不要点确定。
消息断点与普通CC断点的区别在于,普通C
C断点在程序启动之前就可以设置,但是对
于消息断点来说,只有在窗口创建之后才
能够设置消息断点以及拦截消息。
单击工具栏中的 【W】按钮打开Windows窗
口(并不会暂停程序,依然显示的是运行)
。
如果 【W】按钮弹出的窗口
您可能关注的文档
- 糖尿病教育-01-糖尿病基础知识.pptx
- 糖尿病教育-02-从关键指标看糖尿病的诊断与治疗.pptx
- 糖尿病教育-05-糖尿病降糖药物的选择.ppt
- 糖尿病教育-08-HbA1c测试介绍.pptx
- 糖尿病教育-09-糖尿病与并发症.pptx
- 糖尿病教育-11-关注下肢血管病变和糖尿病足.pptx
- 糖尿病教育-12-β细胞功能知多少.pptx
- 糖尿病教育-16-体重控制.pptx
- 糖尿病教育-17-肥胖糖尿病患者的治疗与管理.pptx
- 人工神经元网络模型.pptx
- 使用OllyDbg从零开始Cracking-13第十三章-硬编码序列号寻踪-Part1.pdf
- 使用OllyDbg从零开始Cracking-14第十四章-硬编码序列号寻踪-Part2.pdf
- 使用OllyDbg从零开始Cracking-15第十五章-硬编码序列号寻踪-Part3.pdf
- 使用OllyDbg从零开始Cracking-16第十六章-序列号生成算法分析-Part1.pdf
- 使用OllyDbg从零开始Cracking-17第十七章-序列号生成算法分析-Part2.pdf
- 使用OllyDbg从零开始Cracking-18第十八章-序列号生成算法分析-Part3.pdf
- 使用OllyDbg从零开始Cracking-19第十九章-OllyDbg反调试之IsDebuggerPresent.pdf
- 使用OllyDbg从零开始Cracking-20第二十章-OllyDbg反调试之检测OD进程名.pdf
- 使用OllyDbg从零开始Cracking-21第二十一章-OllyDbg反调试之检测OD进程名,窗口类名,窗口标题名.pdf
- 使用OllyDbg从零开始Cracking-22第二十二章-OllyDbg反调试之UnhandledExceptionFilter,ZwQueryInformationProcess.pdf
最近下载
- 5.2《大学之道》课件(共39张PPT) 2025-2026学年统编版高中语文选择性必修上册.pptx VIP
- 椭圆标准方程导学案.doc VIP
- 单片机烟雾检测报警系统设计方案.docx VIP
- 发那科Line tracking-追踪说明.pdf VIP
- 眼组织解剖与生理.ppt VIP
- 发那科机器人Line Tracking(直线追踪)FANUC.pdf VIP
- 眼的组织解剖和生理-医学课件.ppt VIP
- 2025年警务辅助人员招聘考试(时事政治+公安基础知识)题库.docx VIP
- 眼组织解剖生理.ppt VIP
- (2025年高考真题解读课件)2025年高考地理真题完全解读(河南卷).pptx VIP
原创力文档


文档评论(0)