ollydbug设置断点

ollydbug设置断点

INT 3断点

把当前指令换成INT 3指令,产生断点,但是ollydbug上还是显示的原指令,

优点:可以设置无数个

缺点:容易被检测出来只要检查指令的前一个字节看看是不是CC,

使用:可以用F2或bp来创建和取消断点

硬件断点

跟DRx调试寄存器有关,原理是用DR0-DR3来设定地址,DR7来设定状态

优点:不会修改代码

缺点:只能设置4个

使用:右键菜单中的“BreakPoint"->“Hardware,on execution”

删除:单击菜单选项Debug->Hardware breakpoints打开硬件断点面板然后删除

硬件断点实现和内存断点相似功能

使用:右键菜单中的“BreakPoint"->“Hardware,on write”,选择需要设断的大小最大4个字节,而硬件的写入断点是停在写入指令的小一条,而内存断点是停在写入那一条

内存断点

内存断点的原理是给指定内存赋予不可访问会写的操作,这样当程序访问或写该块内存时就会产生异常而中断,

优点:不修改代码

缺点:由于总要判断是不是内存断点导致的中断所以会降低程序运行速度,只能有一个

使用:可在数据窗口选中需要下段的区域右键“BreakPoint"->“Memory,on write”

删除:“BreakPoint"->“Remove memory breakpoint”

内存一次性断点

ALT+M快捷键显示内存,右键菜单,"Set break-on-acess"在访问上设断,不过是一次性断点当停止后这个断点就被取消了

消息断点

当特定的窗口收到特定的消息而产生消息中断,所以说消息断点只能在窗口已经创建时才可以设置

使用:按工具栏中的“W”打开窗口界面,里面会列出各窗口的参数,选中一个右键"Message breakpoint on ClassProc"然后会弹出一个窗口选择需要的那个特定的消息。

条件断点

满足一定条件就会停的断点

按寄存器条件中断

按shift+F2在弹出的窗口中输入表达式条件eg:eax=1234

按存储器条件中断

按shift+F2在弹出的窗口中输入表达式条件这时可以指定参数

eg:[STRING [ESP+4]]==“c://1212.txt”,STRING在ollydbug的解释是以0结尾的ASCII字符

条件记录断点

不仅有断点的功能而且可以记录断点处的函数表达式和参数,也可以指定断点要断的次数

使用:在要断的函数第一行按Shift+F4打开设置界面。

在condition中设置条件

在explanation中设置一个名称

在expression中设置要记录的内容的条件eg:要记录eax就填eax

在Decode value of expression as 中选择正确的解码表达式

本文参考加密与解密第四版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值