专栏首页Eureka伽罗的技术时光轴OD消息断点的设置方法

OD消息断点的设置方法

一、条件断点:

使用方法(如): 在当前行按[Shift+F2]键->条件断点(这个不太好用,因为程序BUG偶尔失效)。 在当前行按[Shift+F4]键->条件记录断点(只要设置上条件语句和按什么条件生效就可以了)。

条件语句(如): EAX == 00401000 ; 当EAX的值为00401000时。 [EAX] == 05201314 ; 比如EAX的值为00401000,而地址00401000处所指向的值等于5201314时,即EAX的值表示为指针。 [[EAX]] == 05201314 ; 比如EAX的值为00401000,地址00401000处所指向的值为00402000,而地址00402000处所指向的值等于5201314时,即EAX的值表示为指针的指针。 EAX == 05201314 && EBX == 0x05201314 ; 当EAX的值等于5201314(十进制),并且EBX的值等于5201314(十六进制)时。 [EBP+8] == WM_COMMAND ; [[EBP+8]] == 05201314 ; byte ptr[EAX] == 'y' ; [EAX] == "coderui" ; 比如EAX的值为00401000,而地址00401000处所指向的字符串为“coderui”时,即EAX的值表示为指针。 [[EAX+4]+4] == WM_LBUTTONUP ;

二、消息断点:

原理:就是在消息函数上设置条件断点。

步骤: 1、使用[Ctrl+G]呼出“表达式跟随窗口”,输入“TranslateMessage”,然后回车。 2、在“转到”的位置上使用[Shift+F4]呼出“条件记录断点设置窗口”。 3、在“条件”中输入如下语句“[[ESP+4]]==当前按钮句柄&&[[ESP+4]+4]==WM_LBUTTONUP”。 4、把“暂停程序”设置为“按条件”,其他都为默认,然后确定。 5、点击按钮后,程序会停在“TranslateMessage”函数的系统领空中。 6、查看内存,对代码段下“内存访问断点”,然后经过多次[F9](运行),就会找到关键的处理代码了。

=================================================================================

以下演示如何下消息断点,

OD运行TraceMe.exe,

单击系统菜单View/Windows(查看/窗口)或单击工具栏的W按钮,如无内容,则执行右键菜单"Actualize"刷新命令

现在要对Check按钮下断点,当单击按钮时中断,在Check行上单击鼠标右键,在弹出的右键菜单中,选择"Message breakpoint on ClassProc"

当单击事件发生时,会发送WM_LBUTTONUP这个消息,所以,选中这个消息,单击OK,设好消息断点:

单击Check按钮,将会中断到windows系统代码中,由于处于系统底层代码里,这时企图使用Alt+F9或Ctrl+F9返回TraceMe程序的领空代码是徒劳的,

所以用Ctrl+M打开内存区,对.text区块下一次性内存访问断点,如图:

按F9运行,立即中断在程序的空间004010D0处,这里正是程序的消息循环处:

注意的是,这段代码是一个消息循环,不停的处理TraceMe主界面的各类消息,因此可能不是直接处理按钮事件,

可以重复这个过程(其他过程会走到系统领域中,这时再下内存访问断点),在几次中断后到达处理按钮的事件代码,很快就能发现check按钮事件的代码:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 0x000000fc (ATTEMPTED EXECUTE OF NOEXECUTE MEMORY)

    //断点相关 bp + 地址 设置断点 bl 显示已经设定的断点 bu + 地址 设置断点,但是这种类型断点再下一次启动时被记录 bc 清除断点 ...

    战神伽罗
  • windbg调试C源码级驱动

    https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debug-univers...

    战神伽罗
  • 如何解决在DLL的入口函数中创建或结束线程时卡死

    通常情况下并不会使用到DLL的MAIN函数,因为delphi的框架已经把Main函数隐藏起来

    战神伽罗
  • OD条件与消息断点的设置方法

    用户2135432
  • 使用Redis统计活跃用户

    统计活跃用户这个案例非常经典,也是我当时学习redis时,接触到的第一个让我眼睛一亮的使用方式 场景 用户登录后需要记录,以便以后进行登录统计 统计需求主...

    dys
  • 建模 | 利用格林公式计算湖泊面积

    一般来说,天然湖泊水域都是不规则的平面图形,如何计算它的面积呢。这里,利用格林公式来建立数学模型。格林公式的主要功能是构建曲线积分和曲面积分的关系。

    fem178
  • 网易云音乐的消息队列改造之路

    网易云音乐自2013年上线后,业务保持了高速增长。云音乐除了提供好听的音乐外,还留下了我们在乐和人上的美好回忆。本文整理自网易云音乐消息队列负责人林德智在近期 ...

    哲洛不闹
  • 网易云音乐的消息队列改造之路

    网易云音乐自2013年上线后,业务保持了高速增长。云音乐除了提供好听的音乐外,还留下了我们在乐和人上的美好回忆。本文整理自网易云音乐消息队列负责人林德智在近期 ...

    用户1516716
  • 开启root账户

    Remember_Ray
  • python开发工具之eclipse介绍(一)

    Pydev是eclipse是一个扩展,利用它可以编写python语言,pydev的下载地址为:http://pydev.org/download.html,下载...

    无涯WuYa

扫码关注云+社区

领取腾讯云代金券