首页
论坛
专栏
课程

[旧帖] [翻译]使用OllyDbg从零开始Cracking 第二章 0.00元

2009-9-28 03:14 11199

[旧帖] [翻译]使用OllyDbg从零开始Cracking 第二章 0.00元

2009-9-28 03:14
11199
更新第二章
请下载附件阅读,更方便于阅读,排版清楚。
附件中包含本文的pdf格式和随文附件。

=============================================

使用OllyDbg从零开始Cracking
第二章
(翻译:BGCoder)

当我们回顾了OllyDbg的结构组成,基本要素和原理后,需要探究一下数制系统。

数制系统

最常用的数制系统是二进制,十进制和十六进制。
了解它们,最主要的你要知道是:
•  二进制:只有符号0和1,因此称为二进制。 
•  十进制:出现10个字符(从0到9),因此称为十进制。
•  十六进制:从0到F(0-9,A,B,C,D,E和F,总共16个字符)。
通常,除非另有说明,当我们提及某一具体数字时都将其认作十六进制。

我们不使用将数值从一种数制转换为其它数制的令人不太愉快的数学公式。当前,Cracker 们一般使用Windows自带的计算器,它将更加快捷和容易使用,以避免繁冗的工作。

打开计算器,准备工作。

进入菜单View,选择科学模式。


这里,我们看到默认的是十进制模式,在旁边还有其它三种进制可供选择,十六进制Hex,八进制Oct,二进制Bin。

八进制使用8个字符,在Cracking中不太常用,但如果需要,也可在计算器中选择使用。

因此,将一个数字从一种数制系统转换到另一种数制系统,最简单的方法,先将计算器选择到数字初始数制的位置,例如,你需要将数字55从十进制转换为十六进制,在计算器位于十进制位置时输入55。


现在将计算器换到十六进制符号的位置,结果将自动转换并显示出来。


这样,显然在十进制中的数字55转换为十六进制后为37。

当使用在十进制中未出现的符号A, B, C,D,E,,F时,我们可以从键盘输入这些信息。

我认为这种方法在实践中更有用途,允许我们不费力的将数字从一种数制转换到另一种数制。

十六进制负数

这有些难于理解,所以让我们从头道来。十六进制数制一定可以表示负数。如果不行话,那怎样表示一个相对应的十进制负数,例如-1,用十六进制表示是什么?

考虑到这个问题后,我希望所有的问题将会逐渐变的明朗。

如果我们将00000000 到FFFFFFFF所有可能的十六进制数都写出来,我们怎样表示负数?

我们将其中的一半表示正数,一半表示负数。

正数从00000000到7FFFFFFF,负数从80000000到FFFFFFFF

正数

00000000和十进制0相同
00000001仍然是十进制中的1
……
……
7FFFFFFF为十进制的2147483647(也是最大正数)

负数

FFFFFFFF和十进制-1相同
FFFFFFFE为十进制-2
……
……
80000000等同于十进制的-2147483648(也是最小负数)

你可以试着用CommandBar插件查询7FFFFFFF在十进制中的值,只需在其前加问号,然后回车。


在右边,我们看到它返回了十进制值2147483647,完全正确。

现在,我们想看看80000000的值是否为负,我们看到它不能显示(译注1)7FFFFFFF之后的值(这是CommandBar的一个bug),那么在OllyDbg中如何检验它的值呢?


这是一个小技巧。
在寄存器窗口点选EAX。


右键点击选择Modify


出现的窗口让我们修改EAX的值,这个窗口也可以完成不同的转换功能。第一栏填入我们想转换的十六进制值,第二栏会出现相对应的十进制值。

这里,我们看到十六进制80000000转换为了十进制-2147483648。


如果你想检验FFFFFFFF为十进制-1。


在这个窗口中,可以更新寄存器。当我们轻松的验证完负数后,点击Cancel。我们不要以任何方式改变寄存器的值。

ASCII字符

在以下截图中,看到的这种数据将是我们学习的内容之一。每个字符都被赋予了十六进制值。这允许我们将它们视为字符组合,字符和值等等。

这张表拷贝自(嘿嘿)«Теории ассемблера» (Caos Reptante),你可以看到十进制值,相应的十六进制值和字符。例如,你想在OllyDbg中使用空格,你可以使用20 (Hex) 或者 32 (Dec)。


另外,在CommandBar中,我们可以查询十六进制数字对应的字符。
?45


我们看到45对应的是大写字母E,如果你在上表中间一列查询45,会发现它确实就是大写字母E的十六进制值。


在OllyDbg的数据(Dump)窗口中有一列为ASCII字符,让我们看看在CrackMe(译注2)中是否出现了其中的一些字符。


在显示十六进制值那列的旁边,就是ASCII列,在那里,你可以看到由ASCII字符组成的文本字串。

堆栈是什么?

它是内存的一块区域,用于短暂存储数据,这些数据稍后不久就要恢复取出。

就像在桌上放一叠信件或纸牌,最新的信件或纸牌都是放在最顶部,如果一张张地取走信件或纸牌,总会从最上面的开始取。

这是堆栈的主要性质,放在顶部的信件总会被最先取走。

以后我们将学习OllyDbg的堆栈怎样工作。


好的,我认为这次的课程应该结束了。在第三章,我们将学习寄存器,标志以及它们的意义。

译注1
CommandBar插件只能显示到7FFFFFFF的值,输入7FFFFFFF之后的任意数值,它也只会显示7FFFFFFF的结果。

译注2
本文使用第一章的CrackMe,包含在随文附件中

随文附件
1.  CrackMe:ollydbg01-Crackme.zip

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

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

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

本文原文版权:[C] Рикардо Нарваха, пер. Aquila
译文版权:BGCoder,http://www.pediy.com/

pdf格式和随文附件:

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

上传的附件:
最新回复 (71)
zozoiiiiii 2009-9-28 08:03
2
0
**楼主,很通俗易懂啊,希望多翻译这类基础的文章,很入门啊
zozoiiiiii 2009-9-28 08:34
3
0
楼主也是个夜猫子啊,坚持啊,才到第二章啊,争取每天一章啊,哈哈。
moonife 8 2009-9-29 11:56
4
0
感谢BGCoder的翻译和分享
加精支持
smallsina 2009-9-29 12:19
5
0
LZ支持支持
zozoiiiiii 2009-9-30 06:50
6
0
楼主继续啊,等你两天了哦
BGCoder 2 2009-9-30 08:55
7
0
谢谢版主鼓励。
回ls,我现在不在家,第三章已经翻译完毕,下午or晚上可以上传文档。
不过我现在想的是,是发在这个版块还是发在伴你成长或其它版面。
好歹俺也转正了,呵呵
newine 2009-9-30 09:18
8
0
继续等待。。。。。。
cntrump 13 2009-9-30 10:35
9
0
LZ是不是计划全部译完?支持
vivid 2009-10-1 10:44
10
0
顶一下先,继续看!
zozoiiiiii 2009-10-1 23:25
11
0
看第三章的时候,悲剧啊,不是正式会员,下载不了附件,而且图片显示不了,悲剧啊悲剧
wtwt 2009-10-2 03:03
12
0
真是好东西啊,**啊
towncat 2009-10-2 03:22
13
0
初次来到这里.
towncat 2009-10-2 03:22
14
0
路过,看看,很多东西哦.
xyzjlj 2009-10-2 12:02
15
0
好东西,感谢LZ
xue祈祷 2009-10-2 15:58
16
0
第一 第二 我都下了 期待第三 哈哈
赤练 2009-10-2 16:44
17
0
333333333333333333333333
winnip 1 2009-10-22 15:36
18
0
继续顶。楼主加油。
weishulee 2009-10-22 15:46
19
0
还是临时用户。。。好多东西都下不了
riusksk 41 2009-10-22 16:09
20
0
感谢BGCoder的翻译和分享,看了下,有些OD操作还是有自己不知道的,呵呵
linquid 2009-11-8 23:02
21
0
楼主很NB,俄语都会
jymony 2009-11-9 02:01
22
0
是你自己翻译的?有点厉害啊
qinglianzi 2009-11-9 13:23
23
0
好人啊 !!辛苦了,好好学习,天天向上!
bntelecom 2009-11-17 21:25
24
0
好东西,下载不了啊。
Gemgin 2009-11-17 21:29
25
0
支持一下,不错
空梦 2009-11-17 22:31
26
0
谢谢楼主分享~受教了
cbcs 2009-11-18 12:58
27
0
我用的是中文版,反而复杂了。。。。。。。。。学习下。。感谢您的提供。
bhalu 2009-11-18 14:00
28
0
Thanks ofr info
月夜樱飞 2009-11-18 15:05
29
0
好东西,谢谢楼主。
pao 2009-11-19 23:39
30
0
不错,谢谢楼主的翻译
adairs 2009-11-20 00:18
31
0
刚才看到了第一章,没想到这又看到了第二章
多谢楼主了,楼主辛苦
maroon 2009-11-20 01:19
32
0
正好需要这个东西  谢谢lz
snowdogly 2009-11-20 08:40
33
0
还不错哦。谢谢
yaojiank 2010-1-5 01:04
34
0
支持
小Hi 2010-1-5 07:00
35
0
LZ支持支持
zrong 2010-1-5 12:27
36
0
谢谢楼主分享
zyhuohuli 2011-9-28 17:34
38
0
擦,好不容易找到了,下载竟然下不了
毛lt 2011-9-29 07:58
39
0
看得有点不太懂。。
天空蓝色 2011-10-28 11:46
40
0
楼主,这个系列是全的吗,
风洞圣士 2012-5-19 14:38
41
0
初次来到这里.
wycdir 2012-6-11 17:50
42
0
哎.都注册好久了.可是很少回贴.真不应该.
yodawasa 2012-6-12 08:46
43
0
谢谢楼主的资源,新手入门,正好拿来学习。
探索知识 2012-8-19 09:19
44
0
再次的感谢了,分享快乐
h水月y 2012-8-20 15:37
45
0
LZ支持支持
闫家亮 2012-8-20 23:42
46
0
过来学习学习~受益匪浅
huanyunshi 2013-9-28 13:50
47
0
谢谢分享。。好好学习
没人爱 2013-9-28 20:32
48
0
这个  我来看看
hutule 2013-9-29 16:28
49
0
谢过了,看一年
yxfyjc 2013-10-8 10:55
50
0
好东西好顶起,让更多的人分享。
游客
登录 | 注册 方可回帖
返回