Ollydbg使用指南

这篇具有很好参考价值的文章主要介绍了Ollydbg使用指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OllyDebug,简称OD,一种反汇编软件,动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器。OllyDebug的使用界面是可视化操作。

OD有很多民间的版本,菜单栏和和工具栏的配置可能有所差别。比较好用的是吾爱破解和吾爱汇编的中文Ollydbg版本。

Ollydbg使用指南

深入学习OllyDBG的调试技巧可以看《加密与解密》一书

真正的技术是练习得来的,工具本身的操作并没有多么神秘,常用核心操作很少,使用工具进行实战调试和积累各种正向工程的知识最重要

OD的基本使用不需要有任何基础知识,但是进行调试分析需要有一定的汇编语言基础

热闹中著一冷眼,便省去许多苦心思;冷落处存一热心,便得许多真趣味。

                                                                                                     ——洪应明

目录

Ollydbg简介

Ollydbg历史

OD界面介绍

OD界面

反汇编窗口

寄存器窗口

信息窗口

基本操作

两种断点

INT3断点

在Ollydbg中的使用

好处

坏处

硬件断点

原理

优点

缺点

在Ollydbg中的使用

程序领空和系统领空

程序领空

概念

特点

系统领空

概念

特点

使用小技巧

1.光标可以点在任何一行汇编代码,双击EIP寄存器的值,可以回到当前动态调试执行的代码的地址,EIP寄存器的值是不能直接修改的

2.打API断点

3.nop掉汇编指令

 4.修改汇编语言机器码

5.执行到用户代码

6.搜索字符串

​编辑

7.调整窗口

8.修改寄存器的值

9.选择喜欢的界面风格

一些调试方法

x64dbg

调试程序需要的知识储备

汇编语言

操作系统

系统API

Ollydbg官方文档英文版


Ollydbg简介

在逆向分析领域,分析者会利用相关的调试工具来分析软件的行为并验证分析结果

动态分析是随着程序运行,随时中断目标的指令流程

在某些场合不适合运行目标进行动态调试(例如病毒)

静态调试的王者是IDA pro (也可以动态调试)

动态分析的工具就是OD(Ollydbg)

IDA pro和OD是逆向工程中的倚天剑和屠龙刀

Ollydbg使用指南

壮士愤,雄风生。

安得倚天剑,跨海斩长鲸。

                                        ——《临江王节士歌》

此外,还有x64dbg,x64dbg有自己的官方网站,OD非官方的民间修改版本比较流行

x64dbg可以调试64位程序,x32dbg可以调试32位程序,OD只有一个版本,只能调试32位程序

所以在面对64位文件的时候,我们需要使用X64dbg,不能使用OD

逆向工程必备的调试工具有:

  • IDA pro
  • Ollydbg
  • x64dbg

Ollydbg使用指南

Ollydbg历史

OllyDbg(以其作者Oleh Yuschuk的名字命名)是一个用于直接分析二进制程序的x86调试器,通常应用于找不到源代码的程序的调试。它会跟踪寄存器、过程、API、I/O、表格、常量以及字符串等。它具有友好的GUI,并且可以通过安装第三方插件来扩展它的功能。其1.x版本在1.10开发完毕后终止。

2.0版本于2010年6月发布,该版本并没有延续1.x版本的代码,而是转而重写。尽管OllyDbg到现在为止还不支持反汇编x64处理器编译的二进制文件,但开发人员已经承诺将在以后的版本中支持调试x64处理器的程序。

Ollydbg使用指南

 开发者Oleh Yuschuk

OD界面介绍

脑补一下你想象中的hacker界面

可能是有很多的窗口

Ollydbg使用指南

或者是影视中常见的字符串雨

Ollydbg使用指南

这些画面看起来十分炫酷,显示中的hacker工作也需要在大量的数据中进行检索,找到自己需要的关键data或code

我们来看一下OD的界面

OD界面

Ollydbg使用指南

这是一个英文版的Ollydbg

如图,由5个窗口构成

反汇编窗口显示汇编语言指令

可以使用快捷键单步执行汇编指令

寄存器窗口会显示当前寄存器的值

数据窗口显示当前程序的十六进制表示

反汇编窗口

Ollydbg使用指南

 如图是反汇编窗口的三栏内容

  1. 地址为虚拟地址,不同系统环境下这个值一般相同
  2. 机器码,CPU执行的机器码
  3. 这行机器码所对应的汇编代码,我们知道汇编代码和机器码是一一对应的关系
  4. 寄存器窗口

寄存器窗口

Ollydbg使用指南

如图所示,寄存器窗口显示了当前程序执行状态的寄存器的值

就是程序动态调试到这一步时,寄存器中存储的值

信息窗口

Ollydbg使用指南

会显示程序的一些信息

Ollydbg使用指南

上图是一款中文版OD的信息窗口 

基本操作

我们知道操作一个软件,可以使用菜单栏,工具栏

同时常用操作都有对应的快捷键,效果和菜单栏相同

下面是OD的基本操作和对应的快捷键

Ollydbg使用指南

快捷键 操作
F2 下断点,指定断点的地址
F3 加载一个可执行程序,进行调试分析
F4 程序执行到光标位置
F5 缩小,还原当前窗口
F7 单步步入(执行一个汇编指令,遇到过程调用会进入)
F8 单步步过(执行一个汇编指令,遇到过程调用会跳过)
F9 直接运行程序,遇到断点处,程序暂停
Ctrl+F2 重新运行程序到起始处,一般用于重新调试程序
Ctrl+F9 执行到函数返回处,用于快速跳出函数
Alt+F9 执行到用户代码处,用于快速跳出系统函数
Ctrl+G 输入十六进制地址,快速定位到该地址处
ALT+B 显示断点编辑器对话框
添加注释

更多详细操作见帮助文档,没必要掌握

基本操作部分演示视频

OD基操演示

在bilibili内观看更清晰

两种断点

动态调试就是让程序运行起来调试,可以一步一步执行代码调试

我们在动态调试的时候,需要打断点,让程序在需要分析的地方停下来

Ollydbg中有两种类型的断点

Ollydbg使用指南

INT3断点

OD中使用F2快捷键设置的断点就是INT3断点

打INT3断点的时候,断点处就会被CCh(INT3指令的机器码)替换

在Ollydbg中的使用

在指令处右击,按照以下方式选择

Ollydbg使用指南

好处

可以设置无数个断点

坏处

改变了原程序的指令

为了防止API被下断点,就会判断API的首地址是不是CCh

取函数的第一个字节,进行判断,是否下了断点

硬件断点

硬件断点和DRx调试器有很大关系

从Intel CPU体系架构中可以找到DRx的介绍

原理

使用4个调试寄存器 DR0,DR1,DR2,DR3,设置地址

使用一个寄存器DR7设定状态

最多设置4个硬件断点

优点

速度比较快,在INT3断点容易被发现的地方使用硬件断点

缺点

最多只有三个断点

在Ollydbg中的使用

Ollydbg使用指南

程序领空和系统领空

程序领空

概念

执行用户编写的程序代码的领空

特点

地址比较大(比较大的概念如图所示,灵活理解)

Ollydbg使用指南

系统领空

概念

执行系统代码的领空

特点

地址比较大(比较小的概念如图所示)

Ollydbg使用指南

使用小技巧

Some tips for how to use OD easily

一些经验上来讲常用的操作

Ollydbg使用指南

不同的版本下列操作菜单会有出入,但是大致位置相同

1.光标可以点在任何一行汇编代码,双击EIP寄存器的值,可以回到当前动态调试执行的代码的地址,EIP寄存器的值是不能直接修改的

Ollydbg使用指南

2.打API断点

打Messagebox断点:

Ollydbg使用指南

MessageBox指的是显示一个模式对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框返回一个整数值,该值指示用户单击了哪个按钮。

对话框往往是我们调试时候需要重点关注的

Ollydbg使用指南

3.nop掉汇编指令

点击一个汇编指令,右击,用nop填充

nop是汇编语言中的空指令,不进行任何操作

Ollydbg使用指南

 4.修改汇编语言机器码

Ollydbg使用指南

下面对话框显示的是这句汇编语言的机器码,可以修改这个机器码

新手需要查阅汇编语言对应的机器码来修改

汇编语言与机器语言是一一对应的关系

Ollydbg使用指南

5.执行到用户代码

从系统领空执行到程序领空

Ollydbg使用指南

6.搜索字符串

在汇编窗口右击

Ollydbg使用指南

该操作会列出所有字符串

Ollydbg使用指南

可以点击跟进任何一个一个字符串 

另一种操作,在汇编窗口右击

Ollydbg使用指南

 我们一般搜索ASCII和UNICODE字符串,也可以选择智能搜索

在该界面右击->查找,或快捷键Ctrl+F 

可以查找某个特定的字符串

Ollydbg使用指南

Ollydbg使用指南

点击字符串可以跟进

Ollydbg使用指南

7.调整窗口

Ollydbg使用指南有时进入OD显示的窗口是这样的,可以点击左上角窗口最大化来回到我们熟悉的界面

Ollydbg使用指南

8.修改寄存器的值

在寄存器值处右击

Ollydbg使用指南

EFLAG寄存器存有很多标志位,一个标志位占1bit,标志位可以更改 

标志位是根据上面程序的执行结果进行记录,汇编语言进行跳转往往是根据标志位进行的

我们修改标志位的值,会影响跳转,影响程序执行流程

Ollydbg使用指南

下面是EFLAGS寄存器存储标志位的图示

Ollydbg使用指南

EIP寄存器的值不能直接修改,EIP存储当前执行的汇编代码在内存中的位置

Ollydbg使用指南

9.打开跟随表达式窗口

Ctrl+G

Ollydbg使用指南

可以输入windows API的名称,定位到windows API的位置

10.打开断点窗口

Alt+B快捷键打开断点窗口

Ollydbg使用指南

11.选择喜欢的界面风格

各种版本的OD的工具栏中一般都可以自定义界面风格

Ollydbg使用指南

一些调试方法

本处只做概括性描述,一些不能领悟的请查阅资料体会

  1. 使用F8一直步过,单步执行,遇到程序出现产生关键输出时候,在此处下断点,Ctrl+F2重新开始提调试,在断点处停下来,这个地方一般是一个调用过程,点击F7步入这个过程,进行分析
  2. ESP定律(详细请查找资料)
  3. jmp法
  4. nop法
  5. 关键call和关键跳的修改

x64dbg

我们知道OD只有一个32位版本

调试一些64位文件适合使用x64dbg

Ollydbg使用指南

x64dbg官网

Ollydbg使用指南

可以看出界面和OD十分地相似,操作和OD也很类似

如下:

Ollydbg使用指南

Ollydbg使用指南

根据OD的使用经验可以自行探索学习

也有可以调试32位程序的x32dbg

Ollydbg使用指南

调试程序需要的知识储备

汇编语言

操作系统

需要系统学习操作系统

对于系统了解越多,有正向开发的经验,越有利于逆向工程

系统API

可以通过操作系统的API进行内核操作

操作系统只信任自己的API,要通过API才能实现对内核的操作

Ollydbg官方文档英文版

Read this for quick start. Consult help file for details and more features.

Installation is not necessary. Create new directory and unpack odbg110.zip - now you can start!

Pop-up menus display only items that apply. Frequently used menu functions:
 

Function Window Menu command Shortcut
Edit memory as binary, ASCII or UNICODE string Disassembler, Stack
Dump
Binary|Edit Ctrl+E
Undo changes Disassembler, Dump
Registers
Undo selection
Undo
Alt+BkSp
Run application Main Debug|Run F9
Run to selection Disassembler Breakpoint|Run to selection F4
Execute till return Main Debug|Execute till return Ctrl+F9
Execute till user code Main Debug|Execute till user code Alt+F9
Set/reset INT3 breakpoint Disassembler
Names, Source
Breakpoint|Toggle
Toggle breakpoint
F2
Set/edit conditional INT3 breakpoint Disassembler
Names, Source
Breakpoint|Conditional
Conditional breakpoint
Shift+F2
Set/edit conditional logging breakpoint (logs into the Log window) Disassembler
Names, Source
Breakpoint|Conditional log
Conditional log breakpoint
Shift+F4
Temporarily disable/restore INT3 breakpoint Breakpoints Disable
Enable
Space
Set memory breakpoint (only one is allowed) Disassembler, Dump Breakpoint|Memory, on access
Breakpoint|Memory, on write
Remove memory breakpoint Disassembler, Dump Breakpoint|Remove memory breakpoint
Set hardware breakpoint (ME/NT/2000 only) Disassembler, Dump Breakpoint|Hardware (select type and size!)
Remove hardware breakpoint Main Debug|Hardware breakpoints
Set single-short break on access to memory block (NT/2000 only) Memory Set break-on-access F2 
Set break on module, thread, debug string  Options Events
Set new origin Disassembler New origin here
Display list of all symbolic names Disassembler, Dump
Modules
Search for|Name (label)
View names
Ctrl+N
Context-sensitive help (requires external help file!) Disassembler, Names Help on symbolic name Ctrl+F1
Find all references in code to selected address range Disassembler
Dump
Find references to|Command
Find references
Ctrl+R
Find all references in code to the constant Disassembler Find references to|Constant
Search for|All constants
Search whole allocated memory Memory  Search
Search next

Ctrl+L
Go to address or value of expression Disassembler
Dump
Go to|Expression
Go to expression
Ctrl+G
Go to previous address/run trace item Disassembler Go to|Previous Minus
Go to next address/run trace item Disassembler Go to|Next Plus
Go to previous procedure Disassembler Go to|Previous procedure Ctrl+Minus
Go to next procedure Disassembler Go to|Next procedure Ctrl+Plus
View executable file Disassembler, Dump, Modules View|Executable file
Copy changes to executable file Disassembler Copy to executable file
Analyse executable code Disassembler Analysis|Analyse code Ctrl+A
Scan object files and libraries Disassembler Scan object files Ctrl+O
View resources Modules, Memory View all resources
View resource strings
Suspend/resume thread Threads Suspend
Resume
Display relative addresses Disassembler, Dump, Stack Doubleclick address
Copy Most of windows Copy to clipboard Ctrl+C

Frequently used global shortcuts:
 

Ctrl+F2 Restart program
Alt+F2 Close program
F3 Open new program
F5 Maximize/restore active window
Alt+F5 Make OllyDbg topmost
F7 Step into (entering functions)
Ctrl+F7 Animate into (entering functions)
F8 Step over (executing function calls at once)
Ctrl+F8 Animate over (executing function calls at once)
F9 Run
Shift+F9 Pass exception to standard handler and run
Ctrl+F9 Execute till return
Alt+F9 Execute till user code
Ctrl+F11 Trace into
F12 Pause
Ctrl+F12 Trace over
Alt+B Open Breakpoints window
Alt+C Open CPU window
Alt+E Open Modules window
Alt+L Open Log window
Alt+M Open Memory window
Alt+O Open Options dialog
Ctrl+T Set condition to pause Run trace
Alt+X Close OllyDbg

Frequently used Disasembler shortcuts:
 

F2 Toggle breakpoint
Shift+F2 Set conditional breakpoint
F4 Run to selection
Alt+F7 Go to previous reference
Alt+F8 Go to next reference
Ctrl+A Analyse code
Ctrl+B Start binary search
Ctrl+C Copy selection to clipboard
Ctrl+E Edit selection in binary format
Ctrl+F Search for a command
Ctrl+G Follow expression
Ctrl+J Show list of jumps to selected line
Ctrl+K View call tree
Ctrl+L Repeat last search
Ctrl+N Open list of labels (names)
Ctrl+O Scan object files
Ctrl+R Find references to selected command
Ctrl+S Search for a sequence of commands
Asterisk (*) Origin
Enter Follow jump or call
Plus (+) Go to next location/next run trace item
Minus (-) Go to previous location/previous run trace item
Space (  ) Assemble
Colon (:) Add label
Semicolon (;) Add comment

一篇博客不能掌握动态调试和破解软件的技巧,需要自己体会,真正的CTF没有套路,网络安全没有固定套路

安全方面的博客关注看雪论坛

Ollydbg使用指南

北落明星动光彩,南征猛将如云雷。手中电曳倚天剑,直斩长鲸海水开。

                                                                                                ——《司马将军歌》文章来源地址https://www.toymoban.com/news/detail-403596.html

到了这里,关于Ollydbg使用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JMockit 使用指南

    本文主要内容 如何在 SpringBoot 中配置使用 JMockit 如何 mock / faking 依赖的对象 如何对行为 mock 如何 Verification JMockit 之所以强大,是因其使用了 javaagent 对类的字节码做了修改,在 JVM 的所有 mock 工具中,它是功能最强大的。同时注解又是最少的。 在 SpringBoot 项目中使用 JMocki

    2023年04月08日
    浏览(39)
  • Vim深入使用指南

    Vim是一款功能强大的文本编辑器,被广泛用于编写和编辑各种类型的文档和代码。 可以操作系统下载并安装Vim。在安装完成后,通过在终端中输入 vim 命令来启动Vim。 Vim有多个工作模式,每个模式有不同的功能和快捷键。以下是Vim的三个基本模式: 命令模式(Command mode) :

    2024年02月15日
    浏览(38)
  • CuteHttpFileSever使用指南

    浏览器访问,多端互通 局域网传输,速度很快 官方网址 我下载时比较慢,好在文件不大 个人蓝奏云网址 文件提取码:1lqd 官网下载说明 官网页面见下图 1 是windows内的安装包,根据自己电脑配置选择 2 是图形化界面的软件 以上两种选其一即可 图形化界面使用教程 双击图形

    2024年02月05日
    浏览(36)
  • Github的使用指南

    打开giuhub官网,右上角点击你的头像,随后点击 your repositories 点击New开始创建仓库 如下图为创建仓库的选项解释 出现如下界面就可以进行后续的git指令操作了 进入需上传项目的所在目录,打开git命令行,输入如下命令开始初始化git仓库,这将在你的项目文件夹中创建一个名

    2024年02月12日
    浏览(38)
  • Matlab使用指南

    zcy 2.1 数据类型 matlab中有15种基本数据类型,每种数据类型均以数组/矩阵的形式出现 整数 matlab支持1、2、4、8字节的有符号整数和无符号整数 浮点数 有单精度和双精度两种浮点数 复数 复数包含实部和虚部,可以用i或者j来表示虚部 2.2 基本矩阵操作 2.2.1 矩阵的构造 2.2.2 矩阵

    2024年02月06日
    浏览(48)
  • mac使用指南

    新公司给配备了mac,可惜土鳖的我不会用,所以特地写了一篇文章记录学习mac的过程 删除:command+delete 光标移至最右/左:command+右/左箭头 截图:command+shift+3/4/5,3代表截全屏,4代表选中截图,5代表可编辑截图 关闭单个窗口:command+w 关闭程序并结束进程:command+q 切换输入法

    2024年02月07日
    浏览(37)
  • SQL简单使用指南

    SQL(结构化查询语言)是一种用于管理和操作关系型数据库的标准化语言。 数据库是用于存储和组织数据的结构。它由表(表格)组成,每个表都包含多个列和行。以下是SQL中最常用的一些关键术语: 表(Table) :数据库中的基本组织单位,它由列和行组成。 列(Column)

    2024年02月13日
    浏览(42)
  • ILRuntime使用指南

    前言 最近闲着没事做,于是用ILRuntime做了一个小游戏 中间遇到一些坑,对于ILRuntime的认识更清楚了。 其它技巧 自动转换DLL 设置引用文件夹 我们在热更项目里面写代码的时候需要用到Unity的DLL,可是这些DLL引用起来查找就很麻烦。 这时候可以设置文件夹 编辑器就会自动提示

    2023年04月27日
    浏览(36)
  • chtagpt使用指南

    ChatGPT是一款基于GPT-3.5架构的大型语言模型,它可以进行多种自然语言处理任务,如文本生成、对话生成、文本分类等。在本文中,我将为您提供一份详细的ChatGPT使用指南,帮助您更好地了解和使用ChatGPT。 要使用ChatGPT,您需要首先创建一个OpenAI账户并登录。创建账户后,您

    2023年04月17日
    浏览(37)
  • Git使用指南

    # 创建本地branch git branch branch # 当前branch 重命名 git branch -m branch # 列举所有分支  等同于 git branch --list git branch # 列举remote branch git branch -a # 安全删除branch git branch -d branch # 强制删除branch git branch -D branch # 删除remote branch # 等同于git push origin :branch git push origin --delete branch # 查询

    2023年04月25日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包