首页
社区
课程
招聘
[原创]x64dbg入门系列(五)- 消息断点
发表于: 2020-6-19 15:07 20264

[原创]x64dbg入门系列(五)- 消息断点

2020-6-19 15:07
20264

程序有两个文本框、按钮。为了学习消息断点,这次将会从使用消息断点的角度来分析程序。
图片描述

将程序拖入到调试器中直接运行程序,接着在句柄标签栏——>右键刷新,就可以在窗口这个界面看到按钮窗口
图片描述

选中我们需要下的按钮断点,右键——>消息断点,就会出现下图选择消息的界面
按钮有几种状态?
两种:按下、弹起
这两个状态对应到消息断点就是按下“WM_LBUTTONDOWN”,弹起“WM_LBUTTONUP”
图片描述
图片描述

接着我们在文本框中输入测试数据。
图片描述

当按下“Check”按钮后调试器会在下图的位置断下,这个时候如果一直单步调试是走不出user32.dll的,这是因为IsDialogMessage会把句柄传递位ring0。
图片描述

这个时候我们只需要在内存布局——>代码段右键——>内存执行断点——>运行
图片描述

这个时候程序会在下图的位置断下。
图片描述

继续往后分析发现GetDlgItemTextA函数,接着对这段代码进行详细分析,分析结果如下。
图片描述

下图即是“call 201166”和“call 40117B“所对应的MessageBoxA弹窗。
图片描述

这篇文章主要是为了让大家认识和了解消息断点,所以一些有关算法的关键函数并没有做过多的分析。

参考:https://bbs.pediy.com/thread-21532.htm

公众号:一谷米粒
知乎:https://www.zhihu.com/people/yi-gu-mi-li-47


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 8
支持
分享
最新回复 (11)
雪    币: 7121
活跃值: (125793)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
非常感谢楼主分享
2020-6-19 17:35
0
雪    币: 8764
活跃值: (5240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
没有分析怎么断在按钮的真正入口,而是用肉眼看。不科学。
2020-6-19 19:19
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ga感谢分享啊 
2020-6-19 19:21
0
雪    币: 6096
活跃值: (5515)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
5
写的挺好,感谢分享
2020-6-20 10:04
0
雪    币: 1250
活跃值: (3560)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享
2020-6-20 17:57
0
雪    币: 5190
活跃值: (9717)
能力值: ( LV9,RANK:181 )
在线值:
发帖
回帖
粉丝
7

虽然通过模块代码断的内存断点是一个办法来定位调用点,其实比较直观的方式是通过“调用栈”进行定位,在消息断点停下来的时候,查看调用栈,对最近的cycle发起来的调用即是代码发起位置。

2020-6-22 10:27
2
雪    币: 5895
活跃值: (2717)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢分享。
2020-6-22 14:42
0
雪    币: 8858
活跃值: (3093)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学无止境,开卷有益
2020-6-22 15:40
0
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
非常感谢楼主分享
2020-6-22 19:45
0
雪    币: 538
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
加油
2021-4-17 16:05
0
雪    币: 34
活跃值: (142)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢分享,基础知识正在补。
2022-2-22 08:08
0
游客
登录 | 注册 方可回帖
返回
//