OllyDbg简称OD,是一款具有可视化界面的用户模式调试器,结合了动态调试和静态分析,具有强大的反汇编引擎,能够识别数千个被C和Windows所使用的函数,并能将其参数注释出,能自动分析函数过程,循环语句,代码中的字符串等,非常容易上手,并且对异常的跟踪处理相当灵活,这些特性使得OllyDbg成为调试ring3级程序的首选工具,爱好者不断地修改,扩充OllyDbg,脚本执行能力和开发插件接口使得其变得越来越强大。
下面是OD的界面:

我们先对它的重要部分进行编号,然后详细介绍,

(1)首先我们介绍一下第一部分:
也就是这一部分:

使用OD打开目标程序后,OD会打开多个子窗口,单击各个标签按钮可以在各个子窗口之间切换,这些按钮依次对应Log窗口,Executable modules窗口,Memory窗口,Threads窗口,Windows窗口,Handles窗口,CPU窗口,Patches窗口,Call stack窗口,Breakpoints窗口,References窗口,Run trace窗口,Source窗口。
默认的当前窗口是CPU窗口,他在OD中是最重要的窗口,调试程序的绝大部分操作都要在这个窗口进行。他包含以下5个窗口:
1.反汇编窗口
2.寄存器面板
3.信息面板
4.数据面板
5.堆栈面板
这也是我们接下来将要介绍的2,3,4,5,6部分。

(2)CPU窗口的反汇编面板,也就是我们第2个标号的部分。
反汇编面板窗口显示被调试程序的代码,它有4个列,分别是地址(address),机器码(hex dump),反汇编代码(disassembly),注释(comment)。最后一列注释栏显示相关API参数或运行简表,非常有用。
address列:显示相对被单击地址的地址,再次双击返回到标准地址模式。
hex dump列:设置或取消无条件断点,对应的快捷键是F2。
disassembly列:条用汇编器,可直接修改汇编代码。
comment列:允许增加或编辑注释,对应的快捷键是“;”键。
(3)寄存器面板窗口,也就是我们对应的第3个标号的地方.
这里显示CPU各寄存器的值,支持浮点,MMX和3DNow!寄存器,可以单击鼠标右键或单击窗口标题切换显示寄存器的方式。
(4)信息面板窗口。
动态跟踪时,显示与指令相关的各寄存器值,API函数调用提示和跳转提示信息。

(5)堆栈面板窗口。
显示了堆栈的内容,即ESP指向地址的内容,堆栈窗口非常重要,各API函数和子程序等都利用它传递参数和变量等。

(6)数据面板窗口。
以十六进制和字符方式显示文件在内存中的数据,要显示数据可点击鼠标右键“go to expression”命令或按“Ctrl+G”键打开地址窗口,输入地址。


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

单步步入和单步步过:
F8在调试中用的很频繁,可以一句一句地单步执行汇编指令,遇到call指令不会跟进,而路过。
F7和F8功能键的主要差别就在于若遇到call,loop等指令,F8是路过,而F7是跟进去。

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

调试分析
调试分析就是分析程序代码的意义,阅读这些代码时,首先要搞清楚各API函数的定义,还要弄明白那些汇编程序代码的具体含义。

逆向动态调试之Ollydbg的使用相关推荐

  1. 一道Android题目逆向动态调试

    题目来源于海淀区网络与信息安全管理员大赛,题目中将加密验证算法打包进.so,在程序中动态调用check. 本题目通过System.loadLibrary("native-lib") ...

  2. 从0-1 - 一道Android题目逆向动态调试

    题目来源于海淀区网络与信息安全管理员大赛,题目中将加密验证算法打包进.so,在程序中动态调用check. 本题目通过System.loadLibrary("native-lib") ...

  3. JS逆向 -- 动态调试

    一.在网页输入要提交的信息 二.打开开发者工具,查看网络选项卡,点击提交 三.数据是被加密的,搜索关键字"pwd",点击开发者工具右上角的三个点,然后选择搜索 四.输入关键字&qu ...

  4. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  5. OllyDbg动态调试与逆向破解TraceMe.exe

    文章目录 前言 OllyDbg 基础介绍 快捷操作 TraceMe 调试分析 破解校验 总结 前言 OllyDbg 是一个新的动态追踪工具,是将 IDA 与 SoftICE 结合起来的产物,Ring3 ...

  6. 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)

    1. 安卓程序动态调试条件 安卓程序动态调试条件 ( 2个满足1个即可 ): 1. 在 AndroidMainfest.xml ---> application 标签下,设置或者添加属性 and ...

  7. 安卓逆向_13 --- AndroidStudio + Smalidea 动态调试 smali 代码【APK可调试】、gradle 配置

    教我兄弟学Android逆向04 动态调试smali代码:https://www.52pojie.cn/thread-658865-1-1.html From:Android Studio 3.6 调 ...

  8. 安卓逆向_12 --- jeb工具的使用 ( 动态调试 smali 代码 【 普通调试 和 debug调试 】)

    From:https://www.52pojie.cn/forum.php?mod=viewthread&tid=742250 jeb 动态调试 smali 代码:https://www.bi ...

  9. IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总

    IDA PRO 静态反汇编与OllyDbg动态调试实战技巧汇总 ********************************** 案例一: 使用IDA PRO+OllyDbg+PEview 追踪w ...

  10. Android逆向之旅---动态方式破解apk前奏篇(Eclipse动态调试smail源码)

    一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前说的主要采用的是静态方式,步骤也很简单,首先使用apktool来反编译apk,得到smail源码,然后分析smail代码,采用代码 ...

最新文章

  1. Flutter开发之《新锐专家之路:混合开发篇》笔记(55)
  2. Android内存分析和调优(上)
  3. PTA第3章-2 查验身份证 (15 分)
  4. mysql 自增语句_Mysql 自动增加设定基值的语句 | 很文博客
  5. Rabbits UVALive - 8211
  6. Hibernate关联关系配置(一对多、一对一和多对多)
  7. 数据对象、属性和相似性
  8. 苹果AirPods Max拼多多百亿补贴价来了:券后价3999元
  9. 如何查看Dell服务器前面板LCD的报错资讯
  10. LINUX使用patchelf增加/修改rpath
  11. 混响消除插件-Acon Digital DeVerberate 2 v2.1.2 WiN-MAC
  12. 7.2.5 dps 测试软件,dps排行榜网站_7.1.5dps排行榜分享DPS模拟常见上榜翻译2
  13. ureport2项目使用
  14. 成功在fedora 13 上安装 了libfetion
  15. jmail邮件服务器,jmail 指定发送邮件的服务器
  16. Carson带你学Android:RxJava、Retrofit联合使用汇总(含实例教程)
  17. 2018 IEEE极限编程大赛 题解
  18. 项目上线 | 兰精携手盖雅工场,数智驱动绿色转型
  19. java电商项目源码_电子商务系统+java+web+完整项目+包含源码和数据库Java实用源码...
  20. 寻找 中国互联网思想者

热门文章

  1. [健康]生病了绝对不能吃的东西
  2. 2022 基于SpringBoot/SSM的脚手架租赁系统
  3. ajax一直返回 error
  4. 计蒜客-----泥塑课(set)
  5. nyoj 122 Triangular Sums
  6. charles 请求出现乱码_基于iOS的Charles抓包实践
  7. 【洛谷P3804】统计每个子串出现的次数和长度(后缀自动机模版+拓扑序计数)
  8. 【浙江省第16届省赛J:】Welcome Party(并查集+优先队列bfs遍历)
  9. 全国计算机等级考试二级cpp试题,全国高校计算机等级考试(二级C)模拟试题全套.doc...
  10. 推导余弦距离和欧式距离的关系