• 学习:条件[记录]断点


    条件断点:条件断点是一种拥有可设置条件属性,满足一定条件才触发的断点。

    shark恒老师说CC断点和条件断点差不多,只是条件断点需要条件成立,OD才会进行捕获异常,但是他说以后会经常用到,所以自己就另外写一个来记录

    修改00401002反汇编地址为mov eax,0x4

    00401002 B8 04000000 mov eax,0x4

    然后对下面的地址进行设置条件断点 快捷键为shift+f2,EAX == 00000004

    00401007 |. A3 CA204000 mov dword ptr ds:[0x4020CA],eax

    然后F9运行程序,发现成功下断点

    条件语句可以与或非等等都行,比如以下

    eax == 00000004 && eax == 44444444

    eax == 00000004 || eax == 44444444

    eax != 00000004 || eax != 44444444


    条件记录断点:

    在同一个MessageBox windows api函数触发的时候,还可以根据其触发的地址来判断是否进行断点,使用条件记录断点 快捷键shift+F4

    1、进行跟随表达式Ctrl+G,MessageBox,来到user32.dll的领空,然后shift+F4,进行设置记录断点

    2、使用ALT+L,打开记录窗口,能观察每次MessageBox触发的时候的记录

    其中有两条红标的记录一个是COND:0040137D,另一个是CALL 到 MessageBoxA 来自 CRACKME.00401378

    004137D我们跟随下发现其实就是当前MessageBox函数的末尾地址

    CALL 到 MessageBoxA 来自 CRACKME.00401378 这个则是我们进到MessageBoxA的首地址,也就是当调用了弹窗函数,堆栈窗口中压入的第一个

    问题:一个程序不止是只有一个弹窗按钮,有许多,那么我们怎么在记录窗口中寻找我们想要的呢?

    解决:

    1、进行跟随表达式Ctrl+G,MessageBox,来到user32.dll的领空,然后shift+F4,进行设置记录断点,但是这次设置的内容跟上面的不一样

    我们想要下的断点就是0040137D,那么条件就为[ESP] == 0040137D,意思就是当ESP寄存器中的地址是0040137D就进行断点

    然后进行运行程序F9

    第一次的ESP寄存器不是为40137D

    然后点击确定,第二次成功的断了下来,并且自动转到汇编窗口

    同样的记录窗口,虽然有两次,但是断点只有一次

  • 相关阅读:
    信号
    test
    keil4打开keil5工程卡死问题
    day01
    SSH问题
    QT_day02
    QT_day01
    C++_day9am
    文件描述符与重定向
    C++_day8pm_多态
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/12059929.html
Copyright © 2020-2023  润新知