吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4112|回复: 24

[转载技术] 逆向之断点详解

  [复制链接]
能隐能显 发表于 2014-10-16 20:13 | 显示全部楼层 |阅读模式

本帖最后由 能隐能显 于 2014-10-16 20:31 编辑

逆向之断点详解
在软件调试过程中出现最频繁的一个术语就是断点。
断点(BreakPoint):是一个用于通知寄存器在执行到特定点时将程序暂时挂起的信号。当程序在挂起的时候我们称程序处于中断模式。进入终端模式并不会终止或者结束程序,程序流程可以在任何时候继续进行。
断点分三类:Int3断点、硬件断点、内存断点
1Int3断点   Int3断点的机器指令为CCh,因而又称为CC断点。该断点的本质是修改指令,当调试到此断点时调试器会捕获到这个异常,并且停在断点处,然后将断点处的指令恢复为原指令。理论上可以设置无数个此类的断点。然而,由于该断点在下断后修改了原指令,如果将该断点设在API函数的首地址,程序可以通过检测函数的首地址是否是CCh来判断该程序是否被调试,如果程序加入了这个判断流程就可以改变函数的执行路线,从而使调试失败。如果想跳过这个检测机制可以通过将Int3断点设在函数尾处或者函数入口点的下一行来躲避检查。  
通过下面的代码可以检测API函数入口点是否被设置Int3断点:
FARPROC addr;
BYTE Marks = 0;
(FARPROC &)addr = GetProcAddress(LoadLibrary("User32.dll"),"MessageBoxA");
Marks = *((BYTE*)addr);
if(Marks = 0xCC)
{  return TRUE;}
2、硬件断点  在寄存器中用于调试的寄存器被称为调试寄存器,调试寄存器一共有八个,从Dr0Dr7。这八个寄存器按照不同的用途可以分为如下三类:a)Dr0--Dr3  用于存放中断的地址,例如:401000hb)Dr4Dr5 一般不使用,保留c)Dr6Dr7 用来记录Dr0--Dr3这四个寄存器下断的属性,例如401000h这个地址是读、写还是执行;下断的是字节、字还是双子。  通过上面的分类信息可以看出Dr0--Dr3用于设置硬件断点,也就是在调试过程中设置bmp断点。由于只有四个寄存器可以用于设置断点,因而在调试的过程中最多只能设置四个硬件断点。
3、内存断点   程序在运行的过程中内存会有三种不同的状态:读、写和执行。设置内存断点就是通过对指定的地址设置不可访问/不可写属性,当程序试图访问/写入该内存地址的时候就会触发异常。OD截获异常之后通过比较异常地址是不是断点来判断是否要中断。任何时刻在调试器中只能存在一个内存断点。由于内存断点不会修改程序源码,在Int3中断被检测到并且硬件代码失效的情况下,可以用内存断点来代替。但要随时谨记在调试过程中只能有一处内存断点。

如果对你有帮助,请评分吧,评分是不用花的钱的喔。

评分

参与人数 25HB +48 THX +10 收起 理由
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
29590 + 1
24567 + 2
Jawon + 1
一路走来不容易 + 1
Soul1999 + 1
WolfKing + 2
zxjzzh + 2 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
怒骨刺丸 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
SmallEXpel + 1
玖霊後 + 1
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
PDWORD + 1
消逝的过去 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
jaunic + 2
hnymsh + 1
lies + 1
grz + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
tony2526 + 1 + 1 ★★★★★ 热心人,佛祖保佑你事事顺利 ,财源滚滚!!!
bigeorry + 3 热心人终将成为大牛!
pnccm + 3 + 1 你将受到所有人的崇拜!
王婆卖瓜 + 5 + 1 Get!Thanks!
起凡第一华佗 + 15 + 1 我很赞同!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
起凡第一华佗 发表于 2014-10-16 20:28 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 能隐能显 发表于 2014-10-16 20:29 | 显示全部楼层

蜡笔小小新 发表于 2014-10-16 20:28
不错的帖子,赚到了

好就评分啊,看来我还是要加上一句话才行
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
微笑的耗子 发表于 2014-10-16 21:05 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
哎呦呦 发表于 2014-10-16 21:14 | 显示全部楼层

不错的帖子
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
pnccm 发表于 2014-10-17 16:20 | 显示全部楼层

本帖最后由 pnccm 于 2014-10-17 16:26 编辑

楼主请问下cc断点是否就是我们一直常说的下   F2断点   还有内存断点又该如何下断点。内存断点是需要自己通过某个地址下断点  
还是可以像F2那样可以通过用API函数下短。

还请知道的话回复下。让我们这些新手学习学习

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
蜡笔小新 发表于 2014-10-18 21:45 | 显示全部楼层

我很赞同!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Call 发表于 2014-10-21 15:16 | 显示全部楼层

学习了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bigeorry 发表于 2014-10-21 15:36 | 显示全部楼层

不错。学习了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yexpin 发表于 2014-11-25 19:09 | 显示全部楼层

感谢分享,学习了...
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!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

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