zoukankan      html  css  js  c++  java
  • OD使用教程7(下) 调试篇07|解密系列

    OD使用教程7(下)- 调试篇07

     

    让编程改变世界

    Change the world by program


     

    认识OD的两种断点

      OllyDBG从原理上来区分,有两种不同的断点:软件断点和硬件断点。 也许会有朋友说那不是还有内存断点吗? 内存断点严格来说是属于一种特殊的软件断点。  

    内存断点:

    内存断点每次只能设置一个,假如你设置了另一个内存断点,则上一个会被自动删除。 设置一个内存断点,会改变整块(4KB)内存的属性,哪怕你只设置一个字节的内存断点。 另外还需要提一下的是,内存断点会明显降低OD的性能,因为OD经常会校对内存。  

    软件断点:

    当我们按下F2设置的断点就是软件断点。 设置该断点的原理是在断点处重写代码,插入一个int3中断指令,当CPU执行到int3指令的时候,OD就可以获得控制权。  

    硬件断点:

    这个原理跟软件断点不同,硬件断点的可行性依赖于CPU的物理支持。 传说中,有这么一些寄存器,它们只用于调试,我们称为调试寄存器:Dr0~Dr7 其中Dr0~Dr3四个寄存器用来存放中断地址,Dr4、Dr5保留不使用,Dr6、Dr7用来记录Dr0~Dr3的属性(如读,写还是执行,单位是字节,字还是双字)。 因此,这就解释了为啥硬件断点只有四个,天生不足哈。  

    那么聪明的鱼油肯定会追问:小甲鱼老湿,那我要如何来区分何时使用何种断点呢?

    这两种断点在使用上都有它们自身的限制,只要搞清楚它们各自的特性就知道何时该用哪个了。 例如软件断点就只能在OD的CPU界面下,在数据段它下不了,在一条指令的中间它也下不了。 在我们这个例子中,断点我们想下在windows的动态链接库里,我们需要用到硬件断点,因为用软件断点下在dll文件中是不会保存的,重启程序后将丢失断点。   接下来的一系列实践会让你掌握这些技巧的! [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LXXHXSUEODEV']视频下载[/Downlink] [Downlink href='http://urlxf.qq.com/?R3Iv6zV']备胎下载[/Downlink]
  • 相关阅读:
    js实现input button从不可用变为可用
    eclipse工程名出现小红叉的解决办法
    jQuery的dataTables插件实现中文排序
    禁用鼠标选中DOM
    获取当前JS所在文件夹
    解决方案:在移动端输入框在软键盘弹出后位置矫正
    MUI版本升级更新程序IOS和andriod
    JavaScript输入表单数据正则验证规则
    Windows安裝PHP環境
    CentOS下安装PHP
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846258.html
Copyright © 2011-2022 走看看