欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]断点-你需要了解的一切(六)-消息断点

[原创]断点-你需要了解的一切(六)-消息断点

消息断点是对条件记录断点的应用,是针对一个特殊函数:winproc函数的 Message 参数设置的件记录断点 。本讲可视为对条件记录断点的实战。

调试器:OllyDbg

环境:win7 64位真机


原理:windows是基于消息的操作系统,每一个消息都按照相同的格式被写入一个结构体,这个结构体叫MSG。消息发生后windows把该结构体传给WinProc函数,用它来执行消息处理功能。每一个窗口有不同控件,一个窗口至少一个消息循环。

如何设置消息断点:

先把程序运行起来,让软件的主界面显示出来。打开感兴趣的窗口。


输入假码后不要点击回车,保持现状;


接着来到点击W窗口,里面什么都没有


刷新一下;


我们看到第二行,内容为验证用户名和序列号,这和按钮上的文字相同,而且它的类是Button也就是按钮,可见这里是按钮控件了。选中它-右击-设置消息断点、


消息一栏选中202 WM_LBUTTONUP在按钮上抬起鼠标左键。按钮控件上发生鼠标右键抬起事件时就断下。因为单击包括两个操作,一个是鼠标左键按下,另一个是鼠标左键抬起。 暂停程度:选择按消息  记录winproc参数:选择按消息


单击确定按钮,断在 WinProc 函数段首,即窗口过程函数,堆栈窗口里参数显示:Message参数里就是202,如图。


然后在程序领空的.text代码段设置访问断点,f9后就到了程序领空,注:下内存断点和alt+f9比,返回后细节更多更细致,粗略的分析时用alt+f9

如何给消息断点添加记录功能:如果我们对 WinProc 函数的Message参数感兴趣,想让程序记录我们干了什么。,那么我们可以来到B窗口,右击消息断点,设置条件断点, 然后。。。这样发生的所有事件都会被记录下来

到这里我发现,消息断点本质是一个在 WinProc 函数段首设置的,判断{esp+8}==202,即第二参数是否等于WM_LBUTTONUP的条件断点。注:Esp指向返回地址,Esp+4指向第一个参数,esp+8指向第二个参数。


注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功