OllyDBG完美教程Word下载.docx
- 文档编号:21393858
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:48
- 大小:599.94KB
OllyDBG完美教程Word下载.docx
《OllyDBG完美教程Word下载.docx》由会员分享,可在线阅读,更多相关《OllyDBG完美教程Word下载.docx(48页珍藏版)》请在冰豆网上搜索。
因为我这里是把
解压在
F:
\OllyDBG
目录下,所以相应的
目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改
中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动
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
”的开头单词“Wrong”(注意这里查找内容要区分大小写)来查找,找到一处:
在我们找到的字串上右击,再在出来的菜单上点击“反汇编窗口中跟随”,我们来到这里:
见上图,为了看看是否还有其他的参考,可以通过选择右键菜单查找参考->
立即数,会出来一个对话框:
分别双击上面标出的两个地址,我们会来到对应的位置:
00440F79
|.
BA
8C104400
MOV
EDX,CrackMe3.0044108C
;
ASCII
"
Wrong
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
大家注意看一下上面的注释,我在上面标了两个关键点。
有人可能要问,你怎么知道那两个地方是关键点?
其实很简单,我是根据查看是哪条指令跳到“wrong
serial,try
again”这条字串对应的指令来决定的。
如果你在
调试选项->
标签中把“显示跳转路径”及其下面的两个“如跳转未实现则显示灰色路径”、“显示跳转到选定命令的路径”都选上的话,就会看到是从什么地方跳到出错字串处的:
我们在上图中地址
处按
F2
键设个断点,现在我们按
F9
键,程序已运行起来了。
我在上面那个编辑框中随便输入一下,如
CCDebuger,下面那个编辑框我还保留为原来的“754-GFX-IER-954”,我们点一下那个“Register
”按钮,呵,OllyDBG
跳了出来,暂停在我们下的断点处。
我们看一下信息窗口,你应该发现了你刚才输入的内容了吧?
我这里显示是这样:
堆栈
[0012F9AC]=00D44DB4,
(ASCII
CCDebuger"
)
EAX=00000009
上面的内存地址
00D44DB4
中就是我们刚才输入的内容,我这里是
CCDebuger。
你可以在
)
这条内容上左击选择一下,再点右键,在弹出菜单中选择“数据窗口中跟随数值”,你就会在下面的数据窗口中看到你刚才输入的内容。
而
EAX=00000009
指的是你输入内容的长度。
如我输入的
CCDebuger
是9个字符。
如下图所示:
现在我们来按
键一步步分析一下:
[EBP-4]
把我们输入的内容送到EAX,我这里是“CCDebuger”
当我们按
键走到
这一句时,我们按一下
键,进入这个
CALL,进去后光标停在这一句:
我们所看到的那些
EBX、
ESI
等都是调用子程序保存堆栈时用的指令,不用管它,按
键一步步过来,我们只关心关键部分:
00403B2C
/$
53
EBX
00403B2D
56
ESI
00403B2E
57
EDI
00403B2F
89C6
ESI,EAX
把EAX内我们输入的用户名送到
00403B31
89D7
EDI,EDX
把EDX内的数据“Registered
User”送到EDI
00403B33
39D0
CMP
EAX,EDX
用“Registered
User”和我们输入的用户名作比较
00403B35
0F84
8F000000
JE
CrackMe3.00403BCA
相同则跳
00403B3B
85F6
TEST
ESI,ESI
看看ESI中是否有数据,主要是看看我们有没有输入用户名
00403B3D
74
68
CrackMe3.00403BA7
用户名为空则跳
00403B3F
85FF
EDI,EDI
00403B41
6B
CrackMe3.00403BAE
00403B43
8B46
[ESI-4]
用户名长度送EAX
00403B46
8B57
[EDI-4]
“Registered
User”字串的长度送EDX
00403B49
29D0
SUB
把用户名长度和“Registered
User”字串长度相减
00403B4B
77
02
JA
CrackMe3.00403B4F
用户名长度大于“Registered
User”长度则跳
00403B4D
01C2
ADD
EDX,EAX
把减后值与“Registered
User”长度相加,即用户名长度
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]
把“Registered
User”送到EBX
00403B59
39D9
ECX,EBX
比较
00403B5B
58
CrackMe3.00403BB5
不等则完蛋
根据上面的分析,我们知道用户名必须是“Registered
User”。
我们按
键让程序运行,出现错误对话框,点确定,重新在第一个编辑框中输入“Registered
User”,再次点击那个“Register
”按钮,被
拦下。
因为地址
处的那个
我们已经分析清楚了,这次就不用再按
键跟进去了,直接按
键通过。
我们一路按
键,来到第二个关键代码处:
取输入的注册码
EDX,Crack
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OllyDBG 完美 教程