吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 2798|回复: 17

[转载技术] 第十一章-硬件断点与条件断点

  [复制链接]
Shark恒 发表于 2015-1-20 16:08 | 显示全部楼层 |阅读模式

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

F9键运行。
可以看到CrackMe运行起来了,并没有中断下来,因为EAX等于400000,条件不满足。
我们在主菜单项中选择-Help-Contents。
image058.jpg
选择超链接Breakpoints,紧接着选择超链接expression。
image060.jpg
可以看到OD帮助文档中显示了很多条件表达式以及相应的例子。
image062.jpg

条件记录断点
条件记录断点跟刚刚介绍的条件断点差不多,区别在于,我们可以通过设置该断点来记录下设置的条件的精确值。我们举个例子,我们给一个API函数设置条件记录断点,程序中有很多地方调用了这个API函数,通过该条件记录断点我们可以精确的记录程序中每处调用该API函数传递给它的内容。
我们删除之前设置的条件断点,并重启OD。
在反汇编窗口中单击鼠标右键选择-Goto-Expression转到MessageBoxA函数的入口处。
image064.jpg
单击鼠标右键选择-Breakpoint-Conditional log。
image066.jpg
弹出一个窗口,有很多选项。
image068.jpg
这里我们只是记录下我们关心的数据,并不让程序中断下来。
image070.jpg
既然我们不想程序中断下来,那么Condition(条件)编辑框这一栏我们就不填,Pause program(中断程序)这个单选按钮选着Never(不中断)即可。Expression(表达式)这个编辑框我们填写[ESP],我们知道在API函数的入口处,栈顶存放的是函数的返回地址。接着,Log value of expression(记录表达式的值)这个单选按钮我们选择Always(总是),即总是记录表达式的值,也就是[ESP]的值。Logfunction arguments(记录函数参数)这个单选按钮我们也选择Always(总是),即记录函数的参数个数/参数内容。
我们单击工具栏中【L】按钮打开日志窗口。
image072.jpg
我们单击鼠标右键选择-Clear window清空日志窗口。
image074.jpg
如果需要想将日志保存到文件的话,我们选择Log tofile即可。
image076.jpg
我们按F9键运行程序。
我们注意到日志窗口什么也没有记录,因为MessageBoxA并没有被调用。
我们打开注册窗口,输入指定的用户名和序列号。
image078.jpg
单击OK。
image080.jpg
我们可以看到日志窗口显示有关MessageBoxA函数的信息,栈顶内容为40137D即函数的返回地址,接下来是MessageBoxA的参数,依次是hOwner(所属窗口句柄),Text(文本),Title(标题),(Sytle)显示风格。
这里,只显示了一个函数调用的信息,如果某个API被调用了100次的话,你可以将日志保存到文本文件中。如果我们只需要记录某些函数调用的信息的话,我们可以设置相应的条件。
如果程序中有大约100处调用了该API函数,你可以指定相应的条件,比如说返回地址。设置条件为[ESP]== 40137D,那么这100个函数调用中只有返回地址为40137D的会被记录下来。
我们重启CrackMe,定位到MessageBoxA,并设置条件记录断点如下:
image082.jpg
Pause program这个单选按钮我们选择On condition(满足条件时中断下来),即当[ESP] == 40137D时中断下来。
运行程序,打开注册窗口输入用户名ricnar456以及序列号989898。
image084.jpg
当我们输入包含数字的用户名的时候,会弹出两个错误消息框。现在单击OK。
image086.jpg
可以看到第一个MesasgeBoxA并没有中断下来。日志中显示的返回地址为4013C1,并不满足设置的条件,所以不会中断下来。
image088.jpg
我们按下OK按钮。
image090.jpg
这是第二次调用MessageBoxA,这里返回地址满足条件,所以中断下来了。
image092.jpg
我们看到栈顶的内容是40137D,满足条件记录断点设定的条件,所以中断下来了。
image094.jpg
两次调用MessageBoxA的信息,OD都记录下来了。
image096.jpg
只有第二次返回地址为40137D,断了下来。
image098.jpg

好了,以上的内容够大家练习一段时间了。下一章将介绍消息断点。

本系列文章汉化版转载看雪论坛

感谢原作者:RicardoNarvaja(西班牙人)
原作者个人主页:http://www.ricardonarvaja.info/

感谢热心翻译的朋友:
1~3章译者:BGCoder
4~58章译者:安于此生

全集配套程序下载地址:
链接: http://pan.baidu.com/s/1eQzTWfo 密码: vytv



评分

参与人数 21HB +19 THX +5 收起 理由
Jawon + 2
DDK4282 + 1 [吾爱汇编论坛52HB.COM]-感谢恒大,小小评分不成敬意!
一路走来不容易 + 1
Soul1999 + 1
Wayne + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
sjtkxy + 1 + 1
冷亦飞 + 1
agan8888 + 1
消逝的过去 + 2
智慧的猪猪 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
temp + 1
风里去 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
yexing + 1
车太震 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
凌夏随缘 + 1
weiran324 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
crosssss + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
hackysh + 1
hnymsh + 1
lies + 1

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hackysh 发表于 2022-2-8 15:51 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
头像被屏蔽
别管我了行 发表于 2022-3-1 03:26 | 显示全部楼层

提示: 作者被禁止或删除 内容自动屏蔽
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
weiran324 发表于 2022-4-1 22:48 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
凌夏随缘 发表于 2022-6-2 23:36 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zg2600 发表于 2022-6-15 16:18 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zg2600 发表于 2022-8-9 09:23 | 显示全部楼层

[吾爱汇编论坛52HB.COM]-感谢楼主分享,支持一下!做的不错哦,楼主加油,期待更好的作品!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yexing 发表于 2022-8-11 09:01 | 显示全部楼层

感谢楼主的分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
风里去 发表于 2022-8-11 19:25 | 显示全部楼层

谢谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
青衣 发表于 2022-8-12 15:23 | 显示全部楼层

感谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表