WEB开发网
开发学院网络安全黑客技术 如何对抗硬件断点之一 --- 调试寄存器 阅读

如何对抗硬件断点之一 --- 调试寄存器

 2007-01-14 16:44:34 来源:WEB开发网   
核心提示:1.前言在我跨入ollydbg的门的时候,就对ollydbg里面的各种断点充满了疑问,如何对抗硬件断点之一 --- 调试寄存器,以前我总是不明白普通断点,内存断点,载入OD,构造一个死循环就象这样:00400154>90nop//EP停在这里0040015590nop0040015690nop0040015790

1.前言

在我跨入ollydbg的门的时候,就对ollydbg里面的各种断点充满了疑问,以前我总是不明白普通断点,内存断点,硬件断点有什么区别,他们为什么有些时候不能混用,他们的原理是什么,在学习了前辈们的文章以后,终于明白了一些东西。希望这篇文章能让你对硬件断点的原理和使用有一些帮助

2.正文

--------------------------------------------------

i.硬件断点的原理

在寄存器中,有这么一些寄存器,它们用于调试。人们把他们称为调试寄存器,调试寄存器一共有8个名字分别从Dr0-Dr7。所以我们也把调试寄存器简单的称为Drx。

对于Dr0-Dr3的四个调试寄存器,他们的作用是存放中断的地址,例如:401000

对于Dr4,Dr5这两个寄存器我们一般不使用他们,保留

对于Dr6,Dr7这两个寄存器的作用是用来记录你在Dr0-Dr3中下断的地址的属性,比如:对这个401000是硬件读还是写,或者是执行;是对字节还是对字,或者是双字。

好了,从这里你可能明白一些东西。

1. 为什么在OD里面只能下4个硬件断点? 

2. 为什么下硬件断点有byte,word,dword只分?

3. 为什么下硬件断点有读,写,执行只分?

ii.关于F4,F8,F7,F2的区别

在ollydbug的help里面只是提到如何使用F7和F8的使用,并没说明他们的实现原理

现在我们来做一个实验

实验一(F4的原理)

1.随便找一个程序,载入OD,构造一个死循环

就象这样:

00400154 > 90       nop                 //EP停在这里
00400155  90       nop
00400156  90       nop
00400157  90       nop
00400158 ^EBFA      jmpshort天2国际.<ModuleEntryPoint> //构造一个死循环
0040015A  61       popad
0040015B  94       xchgeax,esp

2.对0040015A这一行按下F4,由于死循环,程序一直运行

1 2 3  下一页

Tags:如何 对抗 硬件

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接