OD简介

Ollydbg(简称OD)是Windows平台下Ring3级的程序调试利器。程序调试有静态调试和动态调试两种。静态调试是指将程序源代码编译成可执行程序之前,用手工或编译程序等方法对程序源代码进行测试,来查找和修正程序中的语法错误和逻辑错误。动态调试则是在可执行程序的运行过程中,来查找和修正程序中的语法错误和逻辑错误。随着系统安全与逆向工程的不断发展,程序调试已经成为信息安全爱好者所必备的一种技术。OD结合了静态调试和动态调试的方法,功能强大,已经成为了Windows平台下普通应用程序的调试利器。

1.2.2反汇编介绍

在计算机语言的进化过程中,是由低级语言(机器语言)向高级语言(C、C++、C#、Java等)逐步发展的,但是在实际的运行过程中,计算机能识别的只有机器语言(01代码)。所有高级语言在编译、链接、执行过程中转化为机器语言,并由CPU解释并执行。

机器语言不仅晦涩难懂,而且难以记忆,因此在计算机语言的进化过程中出现了汇编语言。汇编语言是一种与硬件紧密相关的程序设计低级语言,汇编语言使机器语言以便于记忆和理解的符号形式(又称为助记符)存在。

汇编是将汇编代码编译、链接成可执行文件的过程。反汇编则是将可执行文件还原成汇编代码的过程。反汇编技术常常应用在逆向分析、软件破解、漏洞挖掘等场景中,主要目的是逆向分析程序中的逻辑,然后改变程序的运行逻辑,达到更改程序执行的目的。

1.2.3页面介绍

OllyDBG中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考帮助:

反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标题 或 显示标题 来进行切换是否显示。用鼠标左键点击注释标签可以切换注释显示的方式。

寄存器窗口:显示当前所选线程的 CPU 寄存器内容。同样点击标签 寄存器 (FPU) 可以切换显示寄存器的方式。

信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。

数据窗口:显示内存或文件的内容。右键菜单可用于切换显示方式。

堆栈窗口:显示当前线程的堆栈。

1.2.5快捷键

调试中我们经常要用到的快捷键有这些:

F2:设置断点,只要在光标定位的位置(上图中灰色条)按F2键即可,再按一次F2键则会删除断点。(相当于 SoftICE 中的 F9)

F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到 CALL 等子程序不进入其代码。(相当于 SoftICE 中的 F10)

F7:单步步入。功能同单步步过(F8)类似,区别是遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。(相当于 SoftICE 中的 F8)

F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。(相当于 SoftICE 中的 F7)

F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。(相当于 SoftICE 中的 F5)

CTR+F9:执行到返回。此命令在执行到一个 ret (返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。(相当于 SoftICE 中的 F12)

ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。(相当于 SoftICE 中的 F11)

上面提到的几个快捷键对于一般的调试基本上已够用了。要开始调试只需设置好断点,找到你感兴趣的代码段再按 F8 或 F7 键来一条条分析指令功能就可以了。

OD基本介绍及快捷键讲解相关推荐

  1. rpm包制作介绍及实战操作讲解01(学生分享)

    说明:本文来自老男孩linux运维实战培训-高级架构师班学生分享内容,本文分为两部分,此为第一部分. 第一次观看本视频前,建议博友先观看:人人都是讲师的教学培训体系介绍 http://oldboy.b ...

  2. linux的技术性特征有,华为鸿蒙操作系统(HarmonyOS)主要特性介绍,附讲解图示...

    在2019年8月9日华为公布了HarmonyOS鸿蒙开源操作系统,它是一款全新的基于微内核的面向全场景的分布式操作系统.HarmonyOS鸿蒙将向全世界开发者开源,并推动成立开源基金会,建立开源社区, ...

  3. Premiere新冠病毒视频介绍病毒知识讲解视频PR模板

    Premiere新冠病毒视频介绍病毒知识讲解视频开场标题PR模板下载,能够使用文本和颜色创建绝对令人惊叹的演示文稿/标题. 只需粘贴您的文本或logo并更改颜色,就可以渲染了! 主要特点: 无需插件 ...

  4. C# QQ 机器人 Newbe.Mahua 1.X 主要特性介绍与常见问题讲解

    Newbe.Mahua 1.X 系列 LTS 版本已经发布.本篇就来介绍一下 1.X 版本中的主要特性以及常见问题的解答. 主要特性 依赖注入 框架本身采用 Autofac 作为依赖注入框架.进行插件 ...

  5. 小白都能看懂的超详细ideavim自定义快捷键讲解

    学了这么久的VIM,当然还是要用在开发上.下面来介绍一下ideavim这个插件. IdeaVim是用于基于IntelliJ平台的IDE的Vim仿真插件.IdeaVim支持许多Vim功能,包括普通/插入 ...

  6. arm ida 伪代码 安卓 符号表_IDA调试界面介绍及快捷键

    点击蓝字默默关注 首先,打开IDA工具,进入IDA的调试界面. 1IAD调式界面介绍 1.IDA-view-PC:反汇编窗口,如图1.1所示. (图1.1) 2.Hex-View:十六进制编辑窗口,如 ...

  7. HTML文字阴影火焰,CSS3文字特效属性text-shadow的介绍,实例讲解火焰文字效果

    早些时候,要实现文字的阴影效果要用图片,这很不方便,但是现在,可以通过CSS3的text-shadow为字体添加阴影,给text-shadow设置相应的属性值,来实现现一些需要的字体阴影效果,减少了图 ...

  8. DBeaver小松鼠的介绍和快捷键

    目录 前注: 一:使用:要先设置驱动管理器,然后才能设置连接. 二:DBeaver的快捷键介绍 三:怎么给连接重命名&怎么编辑一个连接: 四:使用DBeaver查看大字段需注意: 五:DBea ...

  9. MAN 手册各章节功能介绍及快捷键键位整理

    前言 Man 手册页(Manua pages ,缩写man page) 是在linux操作系统在线软件文档的一种普遍形式.内容包括计算机程序库和系统调用等命令的帮助手册. 手册页是用troff排版软件 ...

最新文章

  1. 团队作业4——第一次项目冲刺(Alpha版本)4.28
  2. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统
  3. Python读写文件 - 转
  4. 关抢占 自旋锁_关于Redis分布式锁这一篇应该是讲的最好的了,先收藏起来再看!...
  5. 重要的数据结构--队列(C语言实现)
  6. StructureMap 作为 ASP.NET MVC 的 DI 框架的使用实例
  7. mysql 查询递归自身,mysql 递归查新
  8. javaweb php异步处理,Spring-MVC异步请求之Servlet异步处理
  9. linux中实现getch函数
  10. 资产配置记录20210814
  11. Laya 【U3D场景的 .ls场景】 【Laya.URL.basePath远程加载】 【加载分包】,【进度条】
  12. 母版页(Master Pages)
  13. 第10章 Python第三方库概览
  14. ModuleNotFoundError: No module named ‘xxx‘; ‘xxx‘ is not a package解决
  15. 腾讯AI Lab披露可信AI研究进展,解读20余项原创工作
  16. webpack版本升级的差异大版本更迭
  17. 机器学习实战——笔记(第一章)
  18. 红月服务器端账号在哪删除,【老玩家进】谁还能记下来红月官服的所有服务器名称??...
  19. word-break Java code
  20. 怎么用python编程分段函数值域_如何在Python中用多变量定义分段函数

热门文章

  1. 音频中的采样率和比特率的关系
  2. 2004雅典奥运会赛程转播时间表.(NEW)
  3. VueJs 打包之后遇到的坑
  4. 成为自动化工程师需要学习什么——把仅有的时间放在,有意义的事情上
  5. java的ElementById的意思_是getelementbyid意思
  6. android sensors 总结(一)
  7. 审批流程 html,新建审批流程.html
  8. c# DataTable与不同结构实体类转换的方法实例
  9. android 闪光灯(手电筒)工具类,兼容android9.0
  10. 因薪资低拒绝offer,HR恼羞成怒,网友瞬间炸翻了..