首页
论坛
课程
招聘
[原创]x64dbg入门系列(五)- 消息断点
2020-6-19 15:07 5300

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

2020-6-19 15:07
5300

目录

观察程序

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

分析程序

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

 

选中我们需要下的按钮断点,右键——>消息断点,就会出现下图选择消息的界面
按钮有几种状态?
两种:按下、弹起
这两个状态对应到消息断点就是按下“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


[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (10)
雪    币: 6200
活跃值: 活跃值 (125654)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
HlccFu 活跃值 2020-6-19 17:35
2
0
非常感谢楼主分享
雪    币: 3668
活跃值: 活跃值 (1017)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
sunsjw 活跃值 1 2020-6-19 19:19
3
0
没有分析怎么断在按钮的真正入口,而是用肉眼看。不科学。
雪    币: 256
活跃值: 活跃值 (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ZwCopyAll 活跃值 2020-6-19 19:21
4
0
ga感谢分享啊 
雪    币: 6402
活跃值: 活跃值 (869)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
gamehack 活跃值 2020-6-20 10:04
5
0
写的挺好,感谢分享
雪    币: 107
活跃值: 活跃值 (431)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
考拉 活跃值 2020-6-20 17:57
6
0
感谢分享
雪    币: 1565
活跃值: 活跃值 (2232)
能力值: ( LV9,RANK:176 )
在线值:
发帖
回帖
粉丝
nevinhappy 活跃值 2 2020-6-22 10:27
7
1

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

雪    币: 1983
活跃值: 活跃值 (427)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lucktiger 活跃值 2020-6-22 14:42
8
0
谢谢分享。
雪    币: 5324
活跃值: 活跃值 (489)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
speedboy 活跃值 2020-6-22 15:40
9
0
学无止境,开卷有益
雪    币: 12
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
i叶落y 活跃值 2020-6-22 19:45
10
0
非常感谢楼主分享
雪    币: 538
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
0x00!=0 ? 活跃值 2021-4-17 16:05
11
0
加油
游客
登录 | 注册 方可回帖
返回