x64dbg-消息断点
9unk Lv5

目标程序

程序下载:CRACKME.7z

解压密码:9unk

任务目标:寻找正确序列号

windows 消息机制

windows 是一个基于消息的系统,它在应用程序开始执行后,为该程序创建一个“消息队列”,用来存放该程序可能创建的各种不同窗口的信息。比如你创建窗口、点击按钮、移动鼠标等等,都是通过消息来完成的。通俗的说,Windows 就像一个中间人,你要干什么事是先通知它,然后它才通过传递消息的方式通知应用程序作出相应的操作。

但是窗口如此之多 windows 是如何判断我是对哪个窗口进行的操作。这里就涉及到了句柄(handle)。Windows 通过使用句柄来标识它代表的对象。比如你点击某个按钮,Windows 就是通过句柄来判断你是点击了哪一个按钮,然后发送相应的消息通知程序。

消息断点的原理

由于 windows 本身的消息机制,可以在某个特点窗口函数接收到某个特定消息时中断。

观察程序

程序有两个文本框(这时应该考虑到 GetDlgItemTextA)、按钮。

2.jpg

分析步骤

按 “F9” 直接运行程序,接着在句柄标签栏—>右键刷新,就可以在这个界面所有控件的句柄。

1.jpg

3.jpg

选择 ok 按钮,右键消息断点。

4.jpg

按钮有两种状态:按下、弹起。这两个状态对应的消息断点,分别对应的消息断点是 “WM_LBUTTONDOWN”,”WM_LBUTTONUP”。这里选择 “WM_LBUTTONDOWN”

5.jpg

6.jpg

接着在文本框中输入测试数据。

7.jpg

当按下 “ok” 按钮后,程序就会在下图位置断下。

8.jpg

在内存布局—>选择代码段—>”F2” 设置内存断点。

9.jpg

继续运行程序,此时程序已经暂停到如下位置。我们向上分析程序可以找到其关键跳转。

10.jpg

reference

[原创]OllyDBG 入门系列(五)-消息断点及 RUN 跟踪

OD调试常见断点及原理(浓缩版)

  • 本文标题:x64dbg-消息断点
  • 本文作者:9unk
  • 创建时间:2020-12-09 11:00:07
  • 本文链接:https://9unkk.github.io/2020/12/09/x64dbg-xiao-xi-duan-dian/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!