x64dbg-消息断点
目标程序
程序下载:CRACKME.7z
解压密码:9unk
任务目标:寻找正确序列号
windows 消息机制
windows 是一个基于消息的系统,它在应用程序开始执行后,为该程序创建一个“消息队列”,用来存放该程序可能创建的各种不同窗口的信息。比如你创建窗口、点击按钮、移动鼠标等等,都是通过消息来完成的。通俗的说,Windows 就像一个中间人,你要干什么事是先通知它,然后它才通过传递消息的方式通知应用程序作出相应的操作。
但是窗口如此之多 windows 是如何判断我是对哪个窗口进行的操作。这里就涉及到了句柄(handle)。Windows 通过使用句柄来标识它代表的对象。比如你点击某个按钮,Windows 就是通过句柄来判断你是点击了哪一个按钮,然后发送相应的消息通知程序。
消息断点的原理
由于 windows 本身的消息机制,可以在某个特点窗口函数接收到某个特定消息时中断。
观察程序
程序有两个文本框(这时应该考虑到 GetDlgItemTextA)、按钮。
分析步骤
按 “F9” 直接运行程序,接着在句柄标签栏—>右键刷新,就可以在这个界面所有控件的句柄。
选择 ok 按钮,右键消息断点。
按钮有两种状态:按下、弹起。这两个状态对应的消息断点,分别对应的消息断点是 “WM_LBUTTONDOWN”,”WM_LBUTTONUP”。这里选择 “WM_LBUTTONDOWN”
接着在文本框中输入测试数据。
当按下 “ok” 按钮后,程序就会在下图位置断下。
在内存布局—>选择代码段—>”F2” 设置内存断点。
继续运行程序,此时程序已经暂停到如下位置。我们向上分析程序可以找到其关键跳转。
reference
- 本文标题:x64dbg-消息断点
- 本文作者:9unk
- 创建时间:2020-12-09 11:00:07
- 本文链接:https://9unkk.github.io/2020/12/09/x64dbg-xiao-xi-duan-dian/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!