od的学习总结

OD是个啥?
OllyDbg简称OD,是一款具有可视化界面的用户模式调试器,结合了动态调试和静态分析,具有强大的反汇编引擎,能够识别数千个被C和Windows所使用的函数,并能将其参数注释出,能自动分析函数过程、循环语句、代码中的字符串等。
OD的那些看不明白的窗口


主窗口

从右往左依次为:VA虚拟地址,机器码,汇编指令
主窗口里面的一些标识

看到那些工具栏了吗


各个位置双击效果
地址列:显示相对被单击地址的地址,再次双击返回到标准地址模式;

Hex数据列:设置或取消无条件断点,对应的快捷键是F2键;

反汇编列:调用汇编器,可直接修改汇编代码;

注释列:允许增加或编辑注释

寄存器窗口的标志寄存器:修改标志寄存器的值

16进制窗口:弹出编辑框

堆栈窗口:16进制跳转到当前双击位置

我最喜欢的快捷键来了
F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点
F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码
F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上
F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停
F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行
CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空
ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空

断点
断点是调试器的一个重要功能,它能使程序中断在需要的地方,从而方便对其分析,常用的断点是int3,其原理是OllyDbg将断点处的代码设置为int3指令。
设置方法:将光标移动到要设断点的行,按快捷键F2键就可以设置了,也可以双击Hex数据列
设置目的:可以让软件运行的时候停在设断点的地方,以方便反复跟踪调试
当关闭程序时,OllyDbg会将设置好的断点保存在UDD文件中,下次运行时还有效。

常见断点类型
软件断点(不受条件的限制):
普通的f2断点,CC断点,原理是在调试器会利用一些在执行时会报出异常或者中断的命令替换断点位置命令的第一个字节。一般来说,经常使用INT3 (二进制代码0xCC)作为替换指令,某些特权指令,如HLT或者CLI等,也可以作为替换指令。
内存断点(跟踪关键数据的断点):
内存访问断点 or 内存写入断点,原理是对所设的地址赋予不可访问、不可写属性,这样当访问、写入的时候久会产生异常,使得OD接管异常,OD接管异常后会比较异常地址是不是断点地址,如果是就中断。每次异常时都要通过比较来确定是否应该中断,内存断点会有些慢,只能下1个内存断点。
硬件断点(跟踪关键标志的断点):
现代cpu为程序调试提供了8个寄存器,名为DRx。调试器可以轻易读写被调试程序的这8个寄存器,而被调试程序不容易读写也通常不需要读写。DR0~DR3四个寄存器用来存放欲下断的地址,DR4,DR5这两个保留, DR6和DR7用来控制断点的大小和触发断点的时机。(比如说大小一个byte,触发时机为写入时)

OD 常用的插件
命令行插件CmdBar


命令 含义
?表达式 计算表达式的值,如“?1+1”
D(DB,DW,DD) 表达式 查看内存数据,如“D 401000” “D esp+c”
BP 表达式,[条件式] 设置断点,例如“bp 401000”
Hw 表达式 设置硬件写断点

————————————————
版权声明:本文为CSDN博主「我想用眼睛去听风景」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_53358173/article/details/116308785

下载说明: 帮助教程
1.资源失效请联系QQ:1138166071补发;寻课加QQ联系
2.资源均为网络收集,仅供参考研究,请在下载后24小时内删除。不要商用和非法用途,否则后果自己承担。
3.默认解压密码:blog.qdql.net
4.购买本站资源即代表同意本站免责协议
5.提示:本站资源属虚拟商品,购买后恕不退款。
6.特别声明本站资源部分来源于网络,如有侵权,请联系站长进行删除处理!
本文地址:http://blog.qdql.net/5889/

评论已关闭!