第一章-OD的各个窗口介绍

ollydbg

使用OllyDbg从零开始Cracking
第一章 – OD的各个窗口介绍
(翻译:BGCoder)

 

《使用 OllyDbg 从零开始 Cracking》教程的目的是为那些想精通 Cracking(译注 1)艺术的人提供必要的基础知识。有了这些基础知识,你就可以阅读和理解更高级的教程,例如《INTRODUCCIÓN AL CRACKING》(译注 2),这个系列教程现在仍在不断加入新的内容。

 

写这个教程想法的产生,是由于意识到了《INTRODUCCIÓN AL CRACKING》中的很多教程对于新手来说太过于复杂。而新手们还未能达到课程所需的能力要求。多方面的原因导致这些新人难以继续学习。因此,《使用 OllyDbg 从零开始 Cracking》的目标并不是取代来自《INTRODUCCIÓN AL CRACKING》中的教程(它里面的教程数量已逾 500),而是为学完这个课程后的读者打下一个良好的基础,以便去学习阅读日益复杂的资料。它的主要目的是减少课程数量,提供必要的基础知识,从而使新的 Cracker 对更复杂的文章资料能够深入的理解。

 

为什么使用 OllyDbg?

我们不会去探讨 SoftICE 和 OllyDbg 之间的对抗,我认为即使是 SoftICE 的狂热追随者也可以很容易的入手 OllyDbg。而 OllyDbg 拥有更多的资料且更容易学习。我们需要从 OllyDbg 这扇大门进入 Cracking 的世界。以后可能会在必要的时候换成其它调试器,但变化的只是它们的使用方法,不变的是它们的本质。

 

让我们从头开始。

首先,需要装备我们以后将主要使用的工具(OllyDbg),点此下载(译注 3)。
ollydbg-1
下载成功后,将其解压到你容易访问的硬盘文件夹内,一个好的办法是在 C 盘创建一个目录,尽管它在哪里都可以运行,在这里我选择了 C: /。
ollydbg-2
解压后,进入你创建的文件夹内可以看到:
ollydbg-3
它的可执行文件是 OLLYDBG.exe,为了方便,我们可以将其快捷方式发送到桌面。
ollydbg-4
好的,启动软件,点击 OllyDbg 图标。
ollydbg-5
上图的消息框显示,PSAPI.DLL,一个库文件旧于我们系统上的同名 DLL 文件。如果你点击 Yes,那么这个旧文件就会从你的文件夹内消失,然后使用系统自身的。尽管我看不出两个文件有什么不同,但是最好选择随软件包自带的,所以永远要点击 No(译注 4)。
ollydbg-6
这是纯净的 OllyDbg(译注:未加载插件非修改版),为了逐渐熟悉 OllyDbg,我们打开的第一个程序来自著名的 CrueHead’a 的 CrackMe,这个文件随本文附带。
要在 OllyDbg 中打开文件,从 File -> Open 或者点击图标。
ollydbg-7
随后打开一个窗口,找到 CrackMe 。
ollydbg-8
ollydbg-9
CrackMe 打开了,此时出现的内容对我们是否清楚并不重要。在对 OllyDbg 不同部分的功能和少许的设置有了解之前,我们现在关心的只是如何将它打开。之后,当学习下一节课程时,当说到 Dump,至少你应该知道到哪里去找这个选项。
ollydbg-10
这里,我们看一下 OllyDbg 四个主要窗口:

 

1) 反汇编窗口

OllyDbg 在这里显示反汇编代码,我们将要以 OllyDbg 的默认配置调试分析你打开的程序。
调试选项可以在 Options -> Debugging options 里更改。
ollydbg-11
ollydbg-12
如果勾选了自动对主模块进行分析(译注 5),OllyDbg 会分析程序显示它的附加信息。
ollydbg-13
这是 CrackMe 的分析结果的开头部分,如果我们不予分析,我们看到的会有所不同。
ollydbg-14
在分析结果中,出现了大量的信息,尽管我们现在还不清楚这些信息是什么,但看起来很有
趣。同时,最好要知道,如果分析的不够正确或有错误,这些消息可以在任何时候去除。
通常 OllyDbg 显示程序的某些部分时是不正确的,错误的将可执行代码解释为数据。然后,它会显示类似于下图中的内容。
ollydbg-15
这种情况,你可以在反汇编窗口中右击选择 Analysis -> Remove analysis from module 手动删除分析结果。
ollydbg-16
之后会显示正确。
ollydbg-17
额外的选项,高亮显示 jumps 和 calls,你使用它可能会更为方便但我个人不喜欢(这会有不同的体验),右键点击,选择 Appearance -> Highlighting — > Jumps’n’Calls。
ollydbg-18
会看到如下图所示。
ollydbg-19
这里,我们看到 Call 句变为绿色,跳转变为黄色。 现在,反汇编窗口更加容易阅读。虽然到现在为止,我们头脑里对这些是什么意思还没有概念,但是这为将来的使用已经做了很好的准备。

 

2)寄存器窗口

第二个重要的窗口——寄存器窗口
ollydbg-20
看一下这个在 OllyDbg 最右边的窗口,它出现了很多信息。
ollydbg-21
还有一些重要的信息我们没有看到。但是你可以设置显示模式的不同类型。右键点击,View FPU registers 显示 FPU 寄存器,View 3DNow! registers 显示 3DNow!寄存器。View debug registers 显示调试寄存器。默认是第一个。
ollydbg-22

 

3)堆栈窗口

现在切换到堆栈窗口。这里没有过多的配置选项,它涉及到 ESP 和 EBP 寄存器指向地址的信息显示。
ollydbg-23
默认情况下,它显示 ESP 寄存器指向的信息(也是最重要的),但是你可以改变它的显示模 式来显示来自涉及 EBP 的信息。这需要在这个窗口上点击右键,选择 GO to EBP。再次点击 右键选择 Go to ESP,回到先前窗口。
ollydbg-24
在后续课程中,我将更加详细的解释堆栈的功能。但目前,我们还只能通过修改配置选项看 看发生了什么变化。

 

4)数据窗口(dump)

这个窗口有很多显示模式,可以在该出口右键点击选择你需要的,默认模式为 8-byte Hex / ASCII。
ollydbg-25
默认的模式是最常用的,我们还可以改变它以显示反汇编代码(Disassemble),文本(Text) 和其它格式(Short,Long,Float)。
ollydbg-26
另外,选择 Special -> PE Header,我们将会在下节课程中看到,非常有用。
ollydbg-27

 

其他窗口

现在我们了解了 OllyDbg 的最主要的四个窗口。还有一些窗口没有直接显示,可以通过菜单或控制面板上的图标按钮访问。
ollydbg-28
现在逐个遍历。

L 图标或 View-> Log,显示日志窗口,通过配置,可以显示 OllyDbg 启动时保存在日志窗口的不同类型信息,也涉及条件断点的信息。以后我们会再次用到它,现在让我们看一下当前 运行进程(CrackMe)的信息和它加载的库文件。
ollydbg-29
这个窗口最重要的选项就是保存到文件。如果我们想把信息保存为文本文件,点击右键选择Log to file。
ollydbg-30

E 按钮 View ->Executables 显示程序运行使用的模块:exe,,dll,,ocx 和其它。
ollydbg-31

M 按钮或 View->Memory 显示我们的程序映射到内存的信息,一个内存块可能被分为几个部分。
ollydbg-32
右键点击可以搜索不同种类的字符串,可以在访问上设置中断。

T 按钮或 View->Threads 显示程序的线程窗口,
ollydbg-33
我们现在不知道它是什么,在后续课程中我们会学到和使用。

W 按钮或 View-> Windows 显示程序窗口,现在程序还为运行,窗口为空白。
ollydbg-34

H 按钮或 View-> Handles,句柄窗口,以后解释它是干什么的。
ollydbg-35

C 按钮或 View->CPU,允许我们返回到 OllyDbg 的主窗口,CPU 窗口。

/按钮或 View->Patches,如果程序经过了修改,这里显示修改的信息,现在我们的程序还没有被修改过,所以为空白。
ollydbg-36

K 按钮或 View->Call stack 显示调用堆栈的窗口信息,可以尝试反向跟踪函数的调用顺序。
ollydbg-37

B 按钮或 View->Breakpoints 显示程序普通断点的列表窗口,这里不显示硬件断点和内存断点。
ollydbg-38

R 按钮或 View->Reference 参考窗口,显示我们在 OllyDbg 中搜索的结果。
ollydbg-39

“…”按钮或 View->Run trace 显示 RUN TRACE(RUN 跟踪)命令的结果。这里我们也可以通 过 Log to file 保存输出结果到文件。
ollydbg-40
我们遍历了一下控制面板上最重要的图标,在后续课程的学习中,你会逐渐熟悉它们。

 

怎样设置实时调试 JIT (JUST IN TIME DEBUGGER)

当然,我们不一定会用的实时调试,除非特殊情况。因为如果我们运行的程序出现崩溃时,我们不需要使用 OllyDbg(默认为 Dr.Watson)。
让 OllyDbg 成为实时调试器,选择菜单 Options-> Just-in-time debugging。
ollydbg-41
点击 Make OllyDbg just-in-time debugger 后再点击 done。
ollydbg-42
取消这个特性,你需要在相同的位置点击 Restore old just-in-time debugger 和 Done。
ollydbg-43

 

在 OllyDbg 中关联插件

OllyDbg 允许你使用插件,这样会对解决问题有所帮助,通过设置 CommandBar 插件,来学习怎样设置。
点击这里(译注:随文附带)下载插件。
ollydbg-44
解压插件压缩包,查看文件夹里的内容。
ollydbg-45
首先,你需要为插件建立文件夹,我将把它建立在 C:\,名为 PLUGINS。
ollydbg-46
当然,此文件夹可以放在任何位置,但我喜欢将它放在 C 盘,我们现在马上配置 OllyDbg, 使 OllyDbg 将此文件夹认可为所有插件的存放目录。
要这样做,选择 Options->Appearance。
ollydbg-47
然后在窗口中选择 Directories 标签。
ollydbg-48
我们看到作为插件路径的目录已被指定,即 OllyDbg.exe 所在的目录,可以把插件放在那里, 但是我喜欢将它们分开,点击 Pluginpath->Browse 选择你创建的文件夹。
ollydbg-49
选择 PLUGINS 文件夹并保存。
ollydbg-50
出现上图,说明你需要重启 OllyDbg,它会认可新的插件文件夹目录,但是首先你需要拷贝刚下载的插件。
ollydbg-51
复制所有文档到 PLUGINS 文件夹内。
ollydbg-52
现在 CommandBar 插件包里的所有文件都被复制到 PLUGINS 文件夹内(通常不需要复制所有文件,只需复制 DLL 文件即可)
现在关闭 OllyDbg,如果已经关闭,重新打开,我们看到菜单 Plugins 出现 CommandBar 和它的选项。
ollydbg-53
CommandBar 出现在 OllyDbg 的底部。
ollydbg-54
这是一个供输入命令的文本框,在很多情况下对我们很有用。以后,我们会看到它的用法。
学习怎样关联插件这一布很重要。
卸载插件只需要删除 PLUGINS 文件夹内相关的 dll 文件然后重启 OllyDbg。然而,最好总是保持 CommandBar 被启用。
再次从 OllyDbg 中打开 CrackMe。

 

OllyDbg 中最常用的快捷键:

F7 执行一行代码,遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条 指令上。

F8 执行一行代码,遇到 CALL 等子程序不进入其代码。

这两个键的功能有所不同,以后将会看到。

F2 在显著行设置断点,再次按 F2 删除断点。 例如:
ollydbg-55
我们想在确定位置 40101A 处设置断点。
ollydbg-56
用鼠标单击此行,就会像图中所示,此行被标记为灰色,然后按 F2。
ollydbg-57
我们看到在第一列的相应位置变为红色,这说明此处已设置断点,再次按 F2 则删除断点。

F9 运行调试程序,直到遇到断点停止运行。当程序运行时,在 OllyDbg 的右下角(译注 6
会显示单词 Running。
ollydbg-58
通过运行 CrackMe,我们可以看到:
ollydbg-59
临时暂停程序,可以按 F12 或 Debug-> Pause。
ollydbg-60
我们可以看到 OllyDbg 显示单词 Paused,继续执行程序,你可以按 F9 或 Debug->Run。

选择 DEBUG-> CLOSE 就可以关闭调试程序。
ollydbg-61

以上就是 OllyDbg 总的概貌,其它深入的设置,我们将在探讨后续章节时会有所涉及。

 


译注 1:
原文 крэкнинга,不知何意,根据理解,用 Cracking 代替。

 


译注 2:
INTRODUCCIÓN AL CRACKING,英文译名:INTRODUCTION TO CRACKING。
网址:http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/ 西班牙文,强大的 Cracking 教程,这个系列教程目前已有 1200 个以上课程内容。

 


译注 3:
请从官方下载,网址:http://www.ollydbg.de/

 


译注 4:
在这里,本人建议使用系统自带的文件。

 


译注 5:
该选项在 Debugging options 的 Analysis1 中,Auto Start analysis of main module。

 


译注 6:
这个位置显示当前状态,通常我们习惯将其设置在左上角,可以在 Options-> Appearance,General 标签下勾选 Show status in toolbar。

 

随文附件:
1. OllyDbg1.10,本文使用原版,请从官网下载,网址:http://www.ollydbg.de/

 

附件:
CrackMe:ollydbg01-Crackme.zip

 

插件:
cmdbar310109c.zip

 

翻译说明:
该系列教程目前官方已更新到第 47 章。本文原文为俄语,译者不才,斗胆翻译,采用了能用的所有手段。 虽经本人严加审校,但难免讹误。有些词句加入了译者的理解,所以可能部分内容与原文有所出入。翻译本文也是译者学习的过程,所以错误在所难免。如发现错误,敬请指正,以免误人子弟。

 

该系列教程链接:http://wasm.ru/series.php?sid=17

 

本文原文链接:http://wasm.ru/article.php?article=ollydbg01

 

本文原文版权:[C] Рикардо Нарваха, пер. Aquila

 

译文版权:BGCoder,http://www.pediy.com/

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注