INT 3 断点
常用断点,使用“F2”快捷键设置的就是 INT 3 断点。这类断点采用修改机器码的方式,将设断处的代码更改为 “CC”,当程序运行至设断处时,会抛出一个异常,OllyDbg会捕捉到这个异常,使得程序暂停,然后恢复程序机器码。INT 3 断点可以设置无限多个,但是由于 INT 3 断点更改了机器码,所以很容易被目标软件检测到。

硬件断点
硬件断点与 DRx 调试寄存器有关,在Intel CPU 体系架构手册中可以找到对 DRx 调试寄存器的介绍。
DRx 调试寄存器有八个(DR0 ~ DR7),每个寄存器的特性如下:

  • DR0 ~ DR3 :调试地址寄存器,用于保存需要监视的地址,例如设置硬件断点。
  • DR4 ~ DR5 :保留,未公开具体作用
  • DR6 :调试寄存器组状态寄存器
  • DR7 :调试寄存器组控制寄存器

简单来说,硬件断点是在 DR0 ~ DR3 中设置断点地址,DR7设置状态。因此最多设置4个硬件断点,当程序运行至所设定断点时,CPU会向 OllyDbg 发送异常信息,OllyDbg处理后,中断程序,让我们继续操作。所以硬件断点不会更改程序的机器码,具有比 INT 3 断点更高的隐蔽性。

设断方法:单击右键,选择 “Breakpoint” - “Hardware, on execution”
删除断点方法:菜单项 “Debug” - “Hardware breakpoints” 打开硬件断点面板,选择 “Delete” 删除
快捷键 F4 :执行到光标所在的行,这一方式是相当于执行了一次硬件断点,之后删除

内存断点
原理是对断点内存地址赋予 不可访问/不可写 属性,当程序试图 访问/写 该内存地址时,就会发生异常,OllyDbg捕捉到这个异常并比较异常发生的地址与断点地址,如果相同,就暂停程序,让我们继续操作。可能因为要比较地址的缘故,OllyDbg为了提高速度,只允许设置一个内存断点。

内存断点不修改机器码,与硬件断点一样不会像 INT 3 断点那样被程序校验导致下断失败,在 INT 3 下断失败,硬件断点失灵的情况下,可以使用内存断点。

设断方法:在设断的内存地址右键 “Breakpoint” - “Memory, on access/write”,这样就可以设置内存访问/写入 断点。对代码或者数据都可以下内存断点,对数据比较好理解,对于代码来说,执行代码时需要“访问”这段代码。所以可以对代码设 “内存访问” 断点。
删除断点方法:右键 - “Breakpoint” - “Remove memory breakpoint”

内存访问一次性断点
该类断点设置的对象是一个内存段,比如对程序的代码段设断,当从其他模块回到程序时,就会触发断点。更多的用在捕捉调用或者返回某个模块上。不多介绍了,在OllyDbg里按 “Alt+M” 显示内存,在对于内存段上右键- “Set break-on-access”,快捷键 F2,该断点时一次性的,断了就删。

消息断点
由于windows系统是消息驱动的,所以可以对消息下断点,在OllyDbg中运行程序后,点击【w】,打开窗口参数表,在对于窗口上右键 - “Message breakpoint on ClassProc”,就会打开设置窗口,在设置窗口里选择要下断的消息即可,删除断点可按 “Alt+B” 打开断点信息窗口,直接删除即可。

基本上大概的断点就是这样,以后觉得有必要补充的再加上去

【加解密学习笔记:第三天】OllyDbg断点介绍相关推荐

  1. 【加解密学习笔记:第一天】操作系统基础知识

    加解密相关系统基础知识 Unicode编码格式 Unicode编码中使用2字节对字符进行编码,对ASCLL码的支持通过愿为不变,高位补零实现 一个字有2字节,Intel在存入储存器时低位入低地址,高位 ...

  2. 【加解密学习笔记:第二天】动态调试工具OllyDbg使用基础介绍

    首先说一下OllyDbg的界面,如下图所示 下面依次介绍: 反汇编面板:有四列,从左到右依次为:地址(Address),机器码(Hex dump),反汇编代码(Disassembly),注释(Comm ...

  3. 【OS学习笔记】三十九 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务一代码

    本文是以下几篇文章对应的动态加载的用户程序/任务一代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 ...

  4. 12Java加密解密学习笔记

    Java加密解密学习笔记 文章目录 1 密码学简介 1.1 密码学基本概念 1.2 密码学的历史 1.2.1 古典密码学 1.2.1.1 替换法 1.2.1.2 移位法 1.2.1.3 古典密码学破解 ...

  5. OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己

    OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...

  6. 软件调试学习笔记(三)—— 调试事件的处理

    软件调试学习笔记(三)-- 调试事件的处理 要点回顾 调试事件的处理 实验一:实现简单调试器(创建进程) 实验二:分析异常来源 实验三:实现简单调试器(附加进程) 实验四:分析NtDebugActiv ...

  7. Windows内存管理学习笔记(三)—— 无处不在的缺页异常

    Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...

  8. Windows驱动开发学习笔记(三)—— 内核空间内核模块

    Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...

  9. Windows系统调用学习笔记(三)—— 保存现场

    Windows系统调用学习笔记(三)-- 保存现场 要点回顾 基本概念 Trap Frame 结构 线程相关的结构体 ETHREAD KTHREAD CPU相关的结构体 KPCR _NT_TIB KP ...

最新文章

  1. 一文读懂经典双目稠密匹配算法SGM
  2. 错误:“Cannot load JDBC driver class ‘com.mysql.jdbc.Driver”的解决方法
  3. 第一章 GuassDB数据库介绍
  4. 【每周CV论文推荐】 掌握残差网络必读的10多篇文章
  5. Vue+blockly 制作与自定义美化
  6. 手把手教你将pyqt程序打包成exe(2)
  7. linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist
  8. Oracle plsql 月历
  9. Google research 一行预处理代码,让你的CV模型更强!
  10. spring 整合websocket过程中遇到的问题
  11. [面试备忘]数组(一维)最大子串总结
  12. 机器学习XGBoost 算法概述
  13. Echarts 模拟飞机飞行动态图
  14. 注塑车间维修师傅如何快速解决9种注塑机故障?
  15. raspberrypi连接神经计算棒人脸识别
  16. html高德地图调用,插件的使用-入门-教程-地图 JS API | 高德地图API
  17. 微信小程序CanvasContext.drawImage的用法
  18. vue项目的首屏优化策略
  19. 计算机维修要学英文吗,学计算机编程需要英文吗?
  20. STM32蓝牙控制循迹避障小车——2.循迹模块

热门文章

  1. Android官方开发文档Training系列课程中文版:OpenGL绘图之响应触摸事件
  2. 为Openstack制作CentOS7镜像
  3. 记使用talend从oracle抽取数据时,数字变为0的问题
  4. python 列表推导式
  5. 关于数据结构的赋值,最好不要直接赋值,而是采用构造函数、或其它函数来赋值,这样可以方便控制---我自己!...
  6. 【will】JS去字符串首尾空格
  7. 为脚本语言平反-JavaScript篇(3)
  8. 老赵书托(1):写在前面
  9. 我是新人我最强----团队新手培训计划展开
  10. Tensorflow深度学习应用(筑基篇)