认识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文件中是不会保存的,重启程序后将丢失断点。

接下来的一系列实践会让你掌握这些技巧的!

OD使用教程 调试篇相关推荐

  1. OD使用教程 调试篇01

    转自http://blog.fishc.com/645.html/2 让编程改变世界 Change the world by program 调试逆向 在软件开发的过程中,程序员会使用一些调试工具,以 ...

  2. OD使用教程6 - 调试篇06|解密系列

    OD使用教程6 - 调试篇06 让编程改变世界 Change the world by program   这一讲开始,小甲鱼带大家接触真正程序的逆向.其实也没啥大不了的,也就是对之前所学的知识进行巩 ...

  3. OD使用教程18 - 调试篇18

    OD使用教程18 - 调试篇18 让编程改变世界 Change the world by program   十八,是一个神奇的数字. 每每提起,总让人心旷神怡. 例如十八精神,例如十八岁的天空,例如 ...

  4. OD使用教程16 - 调试篇16

    OD使用教程16 - 调试篇16 让编程改变世界 Change the world by program 本讲基于第十五讲进行补充,对第十七讲起到铺垫! [buy] 获得所有教学视频.课件.源代码等资 ...

  5. OD使用教程3(中) - 调试篇03|解密系列

    OD使用教程3(上) - 调试篇03 让编程改变世界 Change the world by program 关于系统API Windows应用程序运行在Ring3级别(包括我们的倚天剑:OllyDB ...

  6. OD使用教程20 - 调试篇20

    OD使用教程20 - 调试篇20 让编程改变世界 Change the world by program   名词注释:Keygen为Key Generator的缩写,就是我们一般所说的注册机.是软件 ...

  7. OD使用教程3(下) - 调试篇03|解密系列

    OD使用教程3(下) - 调试篇03 让编程改变世界 Change the world by program 逻辑运算 [caption id="attachment_706" a ...

  8. OD使用教程13(迷途) - 调试篇13

    OD使用教程13(迷途) - 调试篇13 让编程改变世界 Change the world by program   小甲鱼给这节课的主题起了一个比较有意思的名字:迷途   至于为什么?看完这个视频之 ...

  9. OD使用教程21(上) - 调试篇21

    OD使用教程21(上) - 调试篇21 让编程改变世界 Change the world by program 今天我们的主题是:眼见非实 譬如...... 多态病毒和变形病毒 多态是第一种对杀毒软件 ...

最新文章

  1. vue 数组中嵌套数组_来,一起聊聊Excel中的数组
  2. 自定义Spark Partitioner提升es-hadoop Bulk效率
  3. 定义css设备类型-Media Queries图表简介及使用方法
  4. bat执行exe程序_dos命令start教程,并行运行exe程序或者启动bat批处理cmd脚本
  5. fasterrcnn论文_论文笔记:Fast(er) RCNN
  6. 使用终端shell命令批量改动一个文件下的全部文件的读写权限
  7. 觅风易语言完整教程(全集)完整高清版
  8. 《Web程序设计》学习笔记1——web基础知识简述
  9. linux mint怎么切换输入法,Linux Mint安装ibus五笔和拼音输入法简明教程(示例代码)...
  10. 08Spring Boot自定定义配置
  11. 计算机无法识别 此硬盘,如果计算机无法识别硬盘驱动器,该怎么办?
  12. php开发路由器界面,PHP制作简单仿路由器登录界面
  13. 传腾讯计划出售美团全部股权,知情人士辟谣;苹果证实iOS 16要大量推送广告;Linux 6.0-rc1 发布|极客头条...
  14. TensorFlow 2019
  15. 基于HTML5的机器猫在线商城设计与实现
  16. 朱嘉明:数字经济和非同质时代——NFT
  17. matlab 立体双目,correl sp matlab 实现双目视觉的三维重建 利用两张图片 信息 276万源代码下载- www.pudn.com...
  18. C++ builder 编译加速问题
  19. python反恐精英代码_python下如何查询CS反恐精英的服务器信息
  20. java宠物健康值_Java优化宠物系统 求代码 求注解

热门文章

  1. 【Flutter】Flutter 调试 ( 调试控制相关功能 | 断点管理 | 代码运行控制 )
  2. 【计算理论】计算复杂性 ( 3-SAT 是 NP 完全问题 | 团问题是 NP 完全问题 | 团问题是 NP 完全问题证明思路 )
  3. 【Android 安全】DEX 加密 ( Java 工具开发 | 生成 dex 文件 | Java 命令行执行 )
  4. php 数学函数bc的使用(浮点数计算)
  5. MySQL 报 Can't create more than max_prepared_stmt_count statements
  6. jQuery 轮播图
  7. bzoj 1061: [Noi2008]志愿者招募【最小费用最大流】
  8. TouTiao开源项目 分析笔记7 加载数据的过程
  9. 快速排序之Java实现
  10. Eclipse导入项目常见问题----facet版本问题04