【加解密学习笔记:第三天】OllyDbg断点介绍
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断点介绍相关推荐
- 【加解密学习笔记:第一天】操作系统基础知识
加解密相关系统基础知识 Unicode编码格式 Unicode编码中使用2字节对字符进行编码,对ASCLL码的支持通过愿为不变,高位补零实现 一个字有2字节,Intel在存入储存器时低位入低地址,高位 ...
- 【加解密学习笔记:第二天】动态调试工具OllyDbg使用基础介绍
首先说一下OllyDbg的界面,如下图所示 下面依次介绍: 反汇编面板:有四列,从左到右依次为:地址(Address),机器码(Hex dump),反汇编代码(Disassembly),注释(Comm ...
- 【OS学习笔记】三十九 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务一代码
本文是以下几篇文章对应的动态加载的用户程序/任务一代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 ...
- 12Java加密解密学习笔记
Java加密解密学习笔记 文章目录 1 密码学简介 1.1 密码学基本概念 1.2 密码学的历史 1.2.1 古典密码学 1.2.1.1 替换法 1.2.1.2 移位法 1.2.1.3 古典密码学破解 ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 软件调试学习笔记(三)—— 调试事件的处理
软件调试学习笔记(三)-- 调试事件的处理 要点回顾 调试事件的处理 实验一:实现简单调试器(创建进程) 实验二:分析异常来源 实验三:实现简单调试器(附加进程) 实验四:分析NtDebugActiv ...
- Windows内存管理学习笔记(三)—— 无处不在的缺页异常
Windows内存管理学习笔记(三)-- 无处不在的缺页异常 缺页异常 实验一:设置虚拟内存 无处不在的缺页 位于页面文件 保留与提交的误区 实验二:理解缺页异常 EXECUTE_WRITECOPY ...
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
Windows驱动开发学习笔记(三)-- 内核空间&内核模块 内核空间 实验 第一步:编译如下代码 第二步:将 .sys 文件拷贝到虚拟机中 第三步:部署 .sys 文件并运行 第四步:创建一 ...
- Windows系统调用学习笔记(三)—— 保存现场
Windows系统调用学习笔记(三)-- 保存现场 要点回顾 基本概念 Trap Frame 结构 线程相关的结构体 ETHREAD KTHREAD CPU相关的结构体 KPCR _NT_TIB KP ...
最新文章
- 一文读懂经典双目稠密匹配算法SGM
- 错误:“Cannot load JDBC driver class ‘com.mysql.jdbc.Driver”的解决方法
- 第一章 GuassDB数据库介绍
- 【每周CV论文推荐】 掌握残差网络必读的10多篇文章
- Vue+blockly 制作与自定义美化
- 手把手教你将pyqt程序打包成exe(2)
- linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist
- Oracle plsql 月历
- Google research 一行预处理代码,让你的CV模型更强!
- spring 整合websocket过程中遇到的问题
- [面试备忘]数组(一维)最大子串总结
- 机器学习XGBoost 算法概述
- Echarts 模拟飞机飞行动态图
- 注塑车间维修师傅如何快速解决9种注塑机故障?
- raspberrypi连接神经计算棒人脸识别
- html高德地图调用,插件的使用-入门-教程-地图 JS API | 高德地图API
- 微信小程序CanvasContext.drawImage的用法
- vue项目的首屏优化策略
- 计算机维修要学英文吗,学计算机编程需要英文吗?
- STM32蓝牙控制循迹避障小车——2.循迹模块