OllyDBG完美教程Word文档下载推荐.docx

上传人:b****2 文档编号:6103849 上传时间:2023-05-06 格式:DOCX 页数:60 大小:3.05MB
下载 相关 举报
OllyDBG完美教程Word文档下载推荐.docx_第1页
第1页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第2页
第2页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第3页
第3页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第4页
第4页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第5页
第5页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第6页
第6页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第7页
第7页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第8页
第8页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第9页
第9页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第10页
第10页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第11页
第11页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第12页
第12页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第13页
第13页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第14页
第14页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第15页
第15页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第16页
第16页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第17页
第17页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第18页
第18页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第19页
第19页 / 共60页
OllyDBG完美教程Word文档下载推荐.docx_第20页
第20页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

OllyDBG完美教程Word文档下载推荐.docx

《OllyDBG完美教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《OllyDBG完美教程Word文档下载推荐.docx(60页珍藏版)》请在冰点文库上搜索。

OllyDBG完美教程Word文档下载推荐.docx

还有一个常用到的标签就是上图后面那个字体,在这里你可以更改 

中显示的字体。

上图中其它的选项可以保留为默认,若有需要也可以自己修改。

修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动 

OllyDBG。

在这个对话框上点确定,重新启动一下 

OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。

有人可能知道插件的作用,但对那个 

目录不清楚。

我这简单解释一下:

这个 

目录的作用是保存你调试的工作。

比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 

就会把你所做的工作保存到这个 

目录,以便你下次调试时可以继续以前的工作。

如果不设置这个 

目录,OllyDBG 

默认是在其安装目录下保存这些后缀名为 

udd 

的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。

另外一个重要的选项就是调试选项,可通过菜单 

调试设置 

来配置:

新手一般不需更改这里的选项,默认已配置好,可以直接使用。

建议在对 

已比较熟的情况下再来进行配置。

上面那个异常标签中的选项经常会在脱壳中用到,建议在有一定调试基础后学脱壳时再配置这里。

除了直接启动 

来调试外,我们还可以把 

添加到资源管理器右键菜单,这样我们就可以直接在 

.exe 

及 

.dll 

文件上点右键选择"

用Ollydbg打开"

菜单来进行调试。

要把 

添加到资源管理器右键菜单,只需点菜单 

添加到浏览器,将会出现一个对话框,先点击"

添加 

Ollydbg 

到系统资源管理器菜单"

,再点击"

完成"

按钮即可。

要从右键菜单中删除也很简单,还是这个对话框,点击"

从系统资源管理器菜单删除 

Ollydbg"

就行了。

支持插件功能,插件的安装也很简单,只要把下载的插件(一般是个 

DLL 

文件)复制到 

安装目录下的 

PLUGIN 

目录中就可以了,OllyDBG 

启动时会自动识别。

要注意的是 

对插件的个数有限制,最多不能超过 

32 

个,否则会出错。

建议插件不要添加的太多。

到这里基本配置就完成了,OllyDBG 

把所有配置都放在安装目录下的 

ollydbg.ini 

文件中。

二、基本调试方法

有三种方式来载入程序进行调试,一种是点击菜单 

文件->

打开 

(快捷键是 

F3)来打开一个可执行文件进行调试,另一种是点击菜单 

附加 

来附加到一个已运行的进程上进行调试。

注意这里要附加的程序必须已运行。

第三种就是用右键菜单来载入程序(不知这种算不算)。

一般情况下我们选第一种方式。

比如我们选择一个 

test.exe 

来调试,通过菜单 

来载入这个程序,OllyDBG 

中显示的内容将会是这样:

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

F2:

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

(相当于 

SoftICE 

中的 

F9)

F8:

单步步过。

每按一次这个键执行一条反汇编窗口中的一条指令,遇到 

CALL 

等子程序不进入其代码。

F10)

F7:

单步步入。

功能同单步步过(F8)类似,区别是遇到 

等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。

F8)

F4:

运行到选定位置。

作用就是直接运行到光标所在位置处暂停。

F7)

F9:

运行。

按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。

F5)

CTR+F9:

执行到返回。

此命令在执行到一个 

ret 

(返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。

F12)

ALT+F9:

执行到用户代码。

可用于从系统领空快速返回到我们调试的程序领空。

F11)

上面提到的几个快捷键对于一般的调试基本上已够用了。

要开始调试只需设置好断点,找到你感兴趣的代码段再按 

F8 

F7 

键来一条条分析指令功能就可以了。

字串参考

上一篇是使用入门,现在我们开始正式进入破解。

今天的目标程序是看雪兄《加密与解密》第一版附带光盘中的 

镜像打包中的 

CFF 

Crackme 

#3,采用用户名/序列号保护方式。

原版加了个 

UPX 

的壳。

刚开始学破解先不涉及壳的问题,我们主要是熟悉用 

来破解的一般方法。

我这里把壳脱掉来分析,附件是脱壳后的文件,直接就可以拿来用。

先说一下一般软件破解的流程:

拿到一个软件先别接着马上用 

调试,先运行一下,有帮助文档的最好先看一下帮助,熟悉一下软件的使用方法,再看看注册的方式。

如果是序列号方式可以先输个假的来试一下,看看有什么反应,也给我们破解留下一些有用的线索。

如果没有输入注册码的地方,要考虑一下是不是读取注册表或 

Key 

文件(一般称 

keyfile,就是程序读取一个文件中的内容来判断是否注册),这些可以用其它工具来辅助分析。

如果这些都不是,原程序只是一个功能不全的试用版,那要注册为正式版本就要自己来写代码完善了。

有点跑题了,呵呵。

获得程序的一些基本信息后,还要用查壳的工具来查一下程序是否加了壳,若没壳的话看看程序是什么编译器编的,如 

VC、Delphi、VB 

等。

这样的查壳工具有 

PEiD 

和 

FI。

有壳的话我们要尽量脱了壳后再来用 

调试,特殊情况下也可带壳调试。

下面进入正题:

我们先来运行一下这个 

crackme(用 

检测显示是 

Delphi 

编的),界面如图:

crackme 

已经把用户名和注册码都输好了,省得我们动手^_^。

我们在那个"

Register 

now 

!

"

按钮上点击一下,将会跳出一个对话框:

好了,今天我们就从这个错误对话框中显示的"

Wrong 

Serial, 

try 

again!

来入手。

启动 

OllyDBG,选择菜单 

载入 

CrackMe3.exe 

文件,我们会停在这里:

我们在反汇编窗口中右击,出来一个菜单,我们在 

查找->

所有参考文本字串 

上左键点击:

当然如果用上面那个 

超级字串参考+ 

插件会更方便。

但我们的目标是熟悉 

的一些操作,我就尽量使用 

自带的功能,少用插件。

好了,现在出来另一个对话框,我们在这个对话框里右击,选择"

查找文本"

菜单项,输入"

的开头单词"

Wrong"

(注意这里查找内容要区分大小写)来查找,找到一处:

在我们找到的字串上右击,再在出来的菜单上点击"

反汇编窗口中跟随"

,我们来到这里:

见上图,为了看看是否还有其他的参考,可以通过选择右键菜单查找参考->

立即数,会出来一个对话框:

分别双击上面标出的两个地址,我们会来到对应的位置:

00440F79 

|. 

BA 

8C104400 

MOV 

EDX,CrackMe3.0044108C 

;

ASCII 

Serial,try 

00440F7E 

A1 

442C4400 

EAX,DWORD 

PTR 

DS:

[442C44]

00440F83 

8B00 

[EAX]

00440F85 

E8 

DEC0FFFF 

CrackMe3.0043D068

00440F8A 

EB 

18 

JMP 

SHORT 

CrackMe3.00440FA4

00440F8C 

|>

6A 

00 

PUSH 

00440F8E 

B9 

80104400 

ECX,CrackMe3.00441080 

Beggar 

off!

00440F93 

00440F98 

00440F9D 

00440F9F 

C4C0FFFF 

我们在反汇编窗口中向上滚动一下再看看:

00440F2C 

8B45 

FC 

SS:

[EBP-4]

00440F2F 

14104400 

EDX,CrackMe3.00441014 

Registered 

User"

00440F34 

F32BFCFF 

CrackMe3.00403B2C 

关键,要用F7跟进去

00440F39 

75 

51 

JNZ 

CrackMe3.00440F8C 

这里跳走就完蛋

00440F3B 

8D55 

LEA 

EDX,DWORD 

00440F3E 

8B83 

C8020000 

[EBX+2C8]

00440F44 

D7FEFDFF 

CrackMe3.00420E20

00440F49 

00440F4C 

2C104400 

EDX,CrackMe3.0044102C 

GFX-754-IER-954"

00440F51 

D62BFCFF 

00440F56 

1A 

CrackMe3.00440F72 

00440F58 

00440F5A 

3C104400 

ECX,CrackMe3.0044103C 

CrackMe 

cracked 

successfully"

00440F5F 

5C104400 

EDX,CrackMe3.0044105C 

Congrats!

You 

this 

CrackMe!

00440F64 

00440F69 

00440F6B 

F8C0FFFF 

00440F70 

00440F72 

00440F74 

EDX,CrackMe3.0044108C

大家注意看一下上面的注释,我在上面标了两个关键点。

有人可能要问,你怎么知道那两个地方是关键点?

其实很简单,我是根据查看是哪条指令跳到"

wrong 

serial,try 

again"

这条字串对应的指令来决定的。

如果你在 

调试选项->

标签中把"

显示跳转路径"

及其下面的两个"

如跳转未实现则显示灰色路径"

、"

显示跳转到选定命令的路径"

都选上的话,就会看到是从什么地方跳到出错字串处的:

我们在上图中地址 

处按 

F2 

键设个断点,现在我们按 

F9 

键,程序已运行起来了。

我在上面那个编辑框中随便输入一下,如 

CCDebuger,下面那个编辑框我还保留为原来的"

754-GFX-IER-954"

,我们点一下那个"

按钮,呵,OllyDBG 

跳了出来,暂停在我们下的断点处。

我们看一下信息窗口,你应该发现了你刚才输入的内容了吧?

我这里显示是这样:

堆栈 

[0012F9AC]=00D44DB4, 

(ASCII 

CCDebuger"

EAX=00000009

上面的内存地址 

00D44DB4 

中就是我们刚才输入的内容,我这里是 

CCDebuger。

你可以在 

) 

这条内容上左击选择一下,再点右键,在弹出菜单中选择"

数据窗口中跟随数值"

,你就会在下面的数据窗口中看到你刚才输入的内容。

而 

EAX=00000009 

指的是你输入内容的长度。

如我输入的 

CCDebuger 

是9个字符。

如下图所示:

现在我们来按 

键一步步分析一下:

[EBP-4] 

;

把我们输入的内容送到EAX,我这里是"

当我们按 

键走到 

这一句时,我们按一下 

键,进入这个 

CALL,进去后光标停在这一句:

我们所看到的那些 

EBX、 

ESI 

等都是调用子程序保存堆栈时用的指令,不用管它,按 

键一步步过来,我们只关心关键部分:

00403B2C 

/$ 

53 

EBX

00403B2D 

56 

ESI

00403B2E 

57 

EDI

00403B2F 

89C6 

ESI,EAX 

把EAX内我们输入的用户名送到 

00403B31 

89D7 

EDI,EDX 

把EDX内的数据"

送到EDI

00403B33 

39D0 

CMP 

EAX,EDX 

用"

和我们输入的用户名作比较

00403B35 

0F84 

8F000000 

JE 

CrackMe3.00403BCA 

相同则跳

00403B3B|. 

85F6 

TEST 

ESI,ESI 

看看ESI中是否有数据,主要是看看我们有没有输入用户名

00403B3D 

74 

68 

CrackMe3.00403BA7 

用户名为空则跳

00403B3F 

85FF 

TEST 

EDI,EDI

00403B41 

6B 

CrackMe3.00403BAE

00403B43 

8B46 

[ESI-4] 

用户名长度送EAX

00403B46 

8B57 

[EDI-4] 

字串的长度送EDX

00403B49 

29D0 

SUB 

把用户名长度和"

字串长度相减

00403B4B 

77 

02 

JA 

CrackMe3.00403B4F 

用户名长度大于"

长度则跳

00403B4D 

01C2 

ADD 

EDX,EAX 

把减后值与"

长度相加,即用户名长度

00403B4F 

52 

EDX

00403B50 

C1EA 

SHR 

EDX,2 

用户名长度值右移2位,这里相当于长度除以4

00403B53 

26 

CrackMe3.00403B7B

上面的指令及这条指令就是判断用户名长度最少不能低于4

00403B55 

8B0E 

ECX,DWORD 

[ESI]

把我们输入的用户名送到ECX

00403B57 

8B1F 

EBX,DWORD 

[EDI] 

把"

送到EBX

00403B59 

39D9 

ECX,EBX 

比较

00403B5B 

58 

CrackMe3.00403BB5 

不等则完蛋

根据上面的分析,我们知道用户名必须是"

我们按 

键让程序运行,出现错误对话框,点确定,重新在第一个编辑框中输入"

,再次点击那个"

按钮,被 

拦下。

因为地址 

处的那个 

我们已经分析清楚了,这次就不用再按 

键跟进去了,直接按 

键通过。

我们一路按 

键,来到第二个关键代码处:

取输入的注册码

大家注意看一下,地址 

处的 

和上面我们分析的地址 

是不是汇编指令都一样啊?

这说明检测用户名和注册码是用的同一个子程序。

而这个子程序 

我们在上面已经分析过了。

我们执行到现在可以很容易得出结论,这个 

也就

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2