OllyDbg断点详解

1.INT3断点

INT3断点也被称为CC断点
直接按F2即可设置,可以放置无数个断点,但是软件内的程序易被校验到从而失效
在这里插入图片描述

2.硬件断点

硬件断点和DRx调试器有关,所以只能放置四个断点,右键后选择Breakpoint,再选择Hadware,on execution 即可设置,不容易被检测到
在这里插入图片描述

3.内存断点

可以设置内存访问断点或内存写入断点,原理是对所设地址赋予不可访问/不可写属性,这样当访问/写入时就会产生异常,OllyDbg截获异常后,比较异常地址是不是断点地址,如果是就会中断
每次出现异常都需要进行判断是否为断点,所以断点会降低运行OllyDbg运行速度,并且内存断点只能设置一个,右键后选择Breakpoint,再选择Memory,on write 即可设置,不容易被检测到

这时可能使用硬件访问/写入断点也有相同效果,Memory,on write/ Memory,on access
在这里插入图片描述

注意:硬件访问/写入断点是再触发硬件断点的下一条指令处下断,而内存断点实在触发断点的指令处下断。

4.内存访问一次性断点

点击 “M” 后显示内存,按F2可以对整个内存块设置断点,右键后选择Set memory breakpoint on access 是设置内存访问断点,这时两种方式设置的断点都是一次性断点
在这里插入图片描述

5.消息断点

windows本身是由消息驱动的,如果调试时没有合适的断点,可以尝试使用消息断点。当某个特定的窗口函数接收到某个特定的消息时,消息断点将使程序中断
消息断点和INT3断点的区别在于:INT断点可以再程序启动之前设置,消息断点只有在窗口被创建之后才能被设置并拦截消息
点击 “W” 后,显示窗口消息,如果此时软件没有启动,此处则为空白。F9启动后,显示如下信息,右键选择Message breakpoint on ClassProc即可设置消息断点的相关参数
在这里插入图片描述

Any message 为全部消息,可以下拉进行消息类型的选择
Break on any windows 表示程序的任何窗口接收到该消息都会中断
Log WinProc arguments 用于记录消息过程函数的参数

在这里插入图片描述

删除断点只需要点击 “B” ,选择需要删除的断点右键,点击 Remove即可
在这里插入图片描述

6.条件断点

条件断点就是满足一定条件时才会中断。OllyDbg的条件断点可以按寄存器,存储器,消息等设置断点,条件断点是一个带有条件表达式的普通INT3断点,当调试器遇到这种断点时,会进行判断决定是否暂停
(1)按寄存器条件中断
在需要设置断点的位置处,按下shift + F2 即可进行设置
在这里插入图片描述

(2)按储存器条件中断
可以先对函数设断,Ctrl + g 打开窗口后,输入函数名称即可,如输入"CreateFileA"
在此函数处按F2设断,F9运行后,可在栈窗口看到相应的地址,地址可以在右键 ->Address -> Relative to ESP 调出来
在这里插入图片描述

这里第一个参数是FileName,如果要获得第一个参数的内存地址,可以使用"[ESP+4]",如果还要得到此地址指向的字符串,就必须使用"[[ESP+4]]"
假设CreateFileA函数打开c:\1212.txt时需要通过OlluDbg中断,条件断点可以这样设置:
将光标移到CreateFileA函数第一行,按"Shift + F2",输入[STRING[esp+4]]==“c:\1212.txt”
(“STRING"前缀在OllyDbg中的解释是"以零结尾的ASCII字符串”)
在这里插入图片描述

如果安装了命令行插件,可以直接输入如下的命令
bp CreatFileA,[STRING[esp+4]]==“c:\1212.txt”

如果是Unicode字符串,可以输入如下命令
bp CreatFileW,[UNICODE[esp+4]]==“c:\1212.txt”

7.条件记录断点

条件记录断点除了具有条件断点的作用,还能记录断点处函数表达式或参数的值,也可以设置通过断点的次数,每次符合暂停条件时,计数器的值都将减1
将光标移到CreateFileA函数第一行,按"Shift + F4",输入相关数据
在这里插入图片描述

如果将参数Log value of expression选为Always的话,可以使用快捷键"Alt + L"查看Log data窗口
在这里插入图片描述

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值