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

http://tech.ddvip.com   2007年01月14日    社区交流 收藏本文

本文详细介绍如何对抗硬件断点之一 --- 调试寄存器

  3.调试器的窗口里,右键--查看调试寄存器

  结果在Drx里面显示:

DR00040015A           //地址
DR100000000
DR200000000
DR300000000
DR6FFFF0FF0          //断点属性
DR700000401

  实验二(F8原理)

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

  就像这样

00400154t> E80100D03F   call4010015A    //EP,停在这里
00400159  90       nop
0040015A  90       nop       
0040015B  90       nop
0040015C  90       nop        //对这里下F2断点
0040015D  C3       retn       //返回

  2.按下F8,由于INT3断点,程序中断在0040015C

  3.调试器的窗口里,右键--查看调试寄存器

  结果在Drx里面显示:

DR000400159              //call的返回地址
DR100000000
DR200000000
DR300000000
DR6FFFF4FF1             //断点属性
DR700000401

  实验三(F7原理)

  1.随便找一个程序,载入OD

  2.双击调试器的窗口里的T标志,将TF从原来的0变成1

  3.F9运行

  结果程序断在了下面的一行

  实验四(F2的原理)

  1.用98的notepad吧,载入OD,构造一个死循环

004010CCN> 90       nop                //EP,挺在这里
004010CD  90       nop
004010CE ^EBFC      jmpshortNOTEPAD.<ModuleEntryPoint>//死循环
004010D0  90       nop                //在这里按下F2,普通断点
004010D1  90       nop

  2.按下F9,由于死循环,程序一直运行着

来源:www.popbase.net    作者:Lenus    责编:豆豆技术应用

正在加载评论...