使用OllyDbg从零开始Cracking第十一章硬件断点与条件断点.doc

使用OllyDbg从零开始Cracking第十一章硬件断点与条件断点.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用OllyDbg从零开始Cracking第十一章硬件断点与条件断点

第十一章:硬件断点与条件断点 下面我们将把剩下的类型的断点介绍完,本章先介绍硬件断点和条件断点。 硬件断点 硬件断点(简称:HBP)是处理器的特性之一,它的工作原理我不是很了解,但是我们会用就行了,我们可以设置硬件断点使程序中断下来。 在OD中我们最多可以设置4个硬件断点,如果想设置第5个的话,你需要删除已经设置了的4个中的其中一个。 跟之前一样,我们还是拿CrueHeada的CrackMe来做实验。 硬件断点分为:硬件执行断点(ON EXECUTION),硬件写入断点(ON WRITE),硬件访问断点(ON ACCESS)3种。 硬件执行断点与普通的CC断点作用一样,但硬件执行断点并不会将指令首字节修改为CC,所以更难检测。但是有些程序会使用一些技巧来清除硬件断点,应对方法我们会在后面的章节介绍。 如果你想在401013处设置硬件执行断点的话,请在401013这一行单击鼠标右键选择-Breakpoint-Hardware,on execution。 也可以在命令栏中输入: 这样可以设置硬件执行断点。 OD中有个特殊的窗口,通过它我们可以查看和管理硬件断点。我们选择菜单栏中的Debug-Hardware breakpoints就可以打开这个窗口。 在硬件断点窗口中,如果我们单击Follow按钮,反汇编窗口中该硬件断点所对应的那一行指令就会灰色高亮显示。如果我们单击Delete按钮,那么相应的硬件断点就会被清除。 现在按F9键运行程序。 中断在401013处。 正如你所看到的,起到的效果跟普通的CC断点有点像,如果你像对CC断点做的测试-MOV EAX,DWORD PTR DS:[401013]一样的话,你会发现机器码并没有改变。 在401000这一行单击鼠标右键选择-New origin here将EIP修改为401000,接着按F7键单步。 可以看到EAX的值为0004A6E8,内存的形式为E8 A60400,机器码并没有发生变化。 如果我们重启OD,可以看到硬件断点依然存在。 单击Delete按钮将其删除,然后给MessageBoxA API函数设置一个硬件执行断点。 我们来看看硬件断点窗口。 我们知道,如果按F9键将程序运行起来,然后输入用户名和序列号,跟之前的普通CC断点一样程序将断在MessageBoxA的第一条指令处,这里就不再赘述了。 单个硬件写入断点或者硬件访问断点可以设置1,2或者4个字节的长度,不论我们选择的数据范围有多大,只有前4个字节会起作用。 现在我们清除所有设置的硬件断点,然后再4020CA处设置一个硬件访问断点。 我们在数据窗口中转到4020CA这个地址处。 注意前4个字节。 单击鼠标右键。 可以看到,对于我们标记的区域,硬件访问断点可供我们选择的长度只有1字节和2字节,由于4字节的只针对4的倍数的地址,当前地址并不是4的倍数,所以没有该菜单项。 接下来我们选择后面的1个字节,单击鼠标右键选择-Hardware,on access,可以看到只有1个字节的选项。 我们接着选中后面一个字节,这个时候出现了4个字节(Dword)的选项。 如果我们想在读取或者写入4020CA地址处的内容的时候断下来的话,我们给该地址设置1个字节的硬件访问断点即可。 返回到4020CA处,单击鼠标右键选择-Hardware,on access-Byte。 我们可以看到硬件断点窗口中显示的硬件访问断点长度为1个字节。 F9键运行。 OD提示命中了1号硬件断点。 我们可以看到程序断在了触发硬件访问断点或者硬件写入断点的下一条指令处,所以请记住硬件访问/写入断点是断在触发硬件断点的下一条指令处。 正如你所看到的,跟内存断点不一样,内存断点会断在触发断点指令处,也就是401007处。 而硬件访问/断点断在了触发硬件断点的下一条指令40100C处。 条件断点 条件断点实际上就是普通的CC断点,只不过该断点的触发需要满足设置的条件,如果满足设置的条件,那么程序就会中断下来,如果不满足条件的话,就和没有设置CC断点差不多。 我们来看一个例子: 重启OD并清除我们之前设置的所有硬件断点,我们在40100E处设置一个条件断点,在40100E处单击鼠标右键选择-Breakpoint-Conditional。 就会弹出设置条件的窗口。 举个例子,如果你想当前EAX等于400000的时候,程序中断下来,那么条件应该写成:“EAX == 400000”。 OD的帮助文档中介绍了条件断点的设置可以使用的符号以及条件怎么书写。 我们可以看到设置了条件断点的语句地址显示的是粉红色。按F9键运行。 我们可以看到,OD状态栏显示断下来了。 我们可以看到EAX等于400000,满足条件,所以断了下来。 再次重

您可能关注的文档

文档评论(0)

aicencen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档