通过一个例子来介绍OD的简单使用

OllyDbg是一个32位动态调试器,在平常做逆向的题中用的比较多,下面用bugku一个简单的例子Eazy-Re来介绍一下OllyDbg的使用。

首先打开程序,看一下是干什么的,他提示你输入flag,这里我随便输入几个字母,提示我不正确。

在这里插入图片描述

我们用OD打开程序,会看到下面的这个样子,如果没接触过OD的人可能直接被劝退了,这是啥乱七八糟的,别急,一点点来看,打开程序后会出现5个面板(我更喜欢称之为窗口),分别是反汇编窗口,信息窗口,寄存器窗口,数据窗口,栈窗口。

  • 反汇编窗口

    反汇编窗口显示被调试程序的代码,总共有4列,分别是地址,十六进制的机器码,反汇编代码和注释。在最后一列注释中显示了相关API参数或运行简表,非常有用。

    在反汇编窗口的列中,默认情况下,双击可以完成如下操作:

    • 地址列:显示被双击行地址的相对地址,再次双击返回标准地址模式
    • 十六进制机器码列:设置或取消断点,对应的快捷键是F2
    • 反汇编代码列:调用汇编器,可以直接修改汇编代码,对应的快捷键是空格键
    • 注释列:允许增加或编辑注释,对应的快捷键是;
  • 信息窗口

    在进行动态跟踪时,信息窗口将显示与指令相关的各寄存器的值、API函数调用提示和跳转提示等信息。

  • 数据窗口

    数据窗口以十六进制和字符方式显示文件在内存中的数据。要查看指定位置的数据,可以使用快捷键Ctrl+G,输入地址,进行跳转。

  • 寄存器窗口

    ​ 寄存器窗口显示CPU各寄存器的值,支持浮点、MMX和3DNow!寄存器。可以单击右键或窗口标题切换显示寄存器的方式。

  • 栈窗口

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

介绍完各个窗口后开始进行分析这道题,在一开始运行这个程序的时候,他有一些提示字符,忘记的可以翻回去看看,我们在反汇编窗口的空白处右击-->中文搜索引擎-->搜索ASCII,可以查看程序中出现的字符,然后Ctrl+F搜索你之前看到的提示字符(或者部分提示字符),比如这里我搜的是’flag’,就找到了提示字符的部分,然后上下翻一翻有什么其他值得注意的字符,就看到了真正的flag,这道题到这里就结束了,但是为了介绍OD的使用,我们继续往下分析。

在这里插入图片描述

在这里插入图片描述

我们假设没看到flag,但我们看到了关于正确或者错误的提示,比如我们一开始随便输入了几个a,提示的是“flag不太对……”,我们双击跟进去,找到对应反汇编代码的位置。

在这里插入图片描述
可以看到,提示正确和错误的位置距离不远,并且可以看到一个有一个jnz判断,跳转到提示错误的地方(在十六进制列有一个红色的箭头)。我们在这个判断下个断点,快捷键F2

然后运行程序,注意刚才我们只是打开了一个程序,也就是加载了程序,并没有运行它,可以看到左上角有个黄底红字提示我们是暂停状态。我们可以通过调试->运行或者快捷键F9来运行程序,也可以用快捷图标(那个红色的三角)来运行。

在这里插入图片描述
注意看,左上角已经变成运行了,而且程序给出正常提示,如果想让光标回到当前EIP所指向的语句双击右边寄存器窗口中的EIP就可以了。

我们还是输入一下有特征的字符串,方便我们跟踪,比如还是几个a,然后回车,发现程序到达我们的断点了。

在这里插入图片描述

首先可以看到信息栏提示跳转已实现,依旧是说我们的输入错了,然后看右边寄存器发现了真正的flag,为什么,因为比较的时候会将你输入的字符串和真正的flag放在寄存器中。

我们把断点下在前面一点的位置,比如0x47105F这个地址。然后重新运行程序,快捷键Ctrl+F2,或者点快捷图标,X左边的那个双三角。重新输入aaaaaaa,回车,程序运行到断点位置。然后F8单步执行。

在这里插入图片描述
根据信息窗口我们知道他把我们输入的字符串地址放在了eax寄存器中,继续单步执行

在这里插入图片描述
可以看到寄存器窗口已经有了我们的输入,同理,下面的命令是把真正的flag地址放入ecx中,然后进行一些比较。

下面是一些常用快捷键的总结

快捷键功能
F2设置或取消无条件断点
Ctrl+G显示指定内存地址的数据
F7单步步进,遇到call指令跟进
Ctrl+F7重复按F7,指定按ESC、F12或者遇到其他断点时停止
F8单步步过,遇到call指令路过,不跟进
Ctrl+F8重复按F8,指定按ESC、F12或者遇到其他断点时停止
Ctrl+F9直到出现ret指令时中断
Alt+F9若进入系统领空,此命令可瞬间回到应用程序领空
F9运行程序
双击EIP寄存器让光标回到当前EIP所指向的语句
-(减号)回看之前单步跟踪的代码
Alt+B打开断点窗口
F4执行到当前光标所选中的指令

使用OD分析程序的一般步骤:找特殊字符串或者API,下断点,运行调试。当然如果对汇编不熟悉的话可能分析很费劲,可以与静态分析工具IDA pro一起结合使用。IDA pro的使用介绍可以参考通过一个例子来介绍IDA的简单使用
参考书籍:《加密与解密》

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值