首页
社区
课程
招聘
[旧帖] [翻译]使用OllyDbg从零开始Cracking 第二章 0.00雪花
发表于: 2009-9-28 03:14 18371

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

2009-9-28 03:14
18371

更新第二章
请下载附件阅读,更方便于阅读,排版清楚。
附件中包含本文的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格式和随文附件:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 8
支持
分享
最新回复 (71)
雪    币: 66
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
**楼主,很通俗易懂啊,希望多翻译这类基础的文章,很入门啊
2009-9-28 08:03
0
雪    币: 66
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主也是个夜猫子啊,坚持啊,才到第二章啊,争取每天一章啊,哈哈。
2009-9-28 08:34
0
雪    币: 370
活跃值: (52)
能力值: ( LV13,RANK:350 )
在线值:
发帖
回帖
粉丝
4
感谢BGCoder的翻译和分享
加精支持
2009-9-29 11:56
0
雪    币: 419
活跃值: (96)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LZ支持支持
2009-9-29 12:19
0
雪    币: 66
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主继续啊,等你两天了哦
2009-9-30 06:50
0
雪    币: 244
活跃值: (38)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
谢谢版主鼓励。
回ls,我现在不在家,第三章已经翻译完毕,下午or晚上可以上传文档。
不过我现在想的是,是发在这个版块还是发在伴你成长或其它版面。
好歹俺也转正了,呵呵
2009-9-30 08:55
0
雪    币: 1849
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
继续等待。。。。。。
2009-9-30 09:18
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
9
LZ是不是计划全部译完?支持
2009-9-30 10:35
0
雪    币: 486
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
顶一下先,继续看!
2009-10-1 10:44
0
雪    币: 66
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
看第三章的时候,悲剧啊,不是正式会员,下载不了附件,而且图片显示不了,悲剧啊悲剧
2009-10-1 23:25
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
真是好东西啊,**啊
2009-10-2 03:03
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
初次来到这里.
2009-10-2 03:22
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
路过,看看,很多东西哦.
2009-10-2 03:22
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
好东西,感谢LZ
2009-10-2 12:02
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
第一 第二 我都下了 期待第三 哈哈
2009-10-2 15:58
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
333333333333333333333333
2009-10-2 16:44
0
雪    币: 145
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
18
继续顶。楼主加油。
2009-10-22 15:36
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
还是临时用户。。。好多东西都下不了
2009-10-22 15:46
0
雪    币: 433
活跃值: (1870)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
20
感谢BGCoder的翻译和分享,看了下,有些OD操作还是有自己不知道的,呵呵
2009-10-22 16:09
0
雪    币: 154
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
楼主很NB,俄语都会
2009-11-8 23:02
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
是你自己翻译的?有点厉害啊
2009-11-9 02:01
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
好人啊 !!辛苦了,好好学习,天天向上!
2009-11-9 13:23
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好东西,下载不了啊。
2009-11-17 21:25
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
支持一下,不错
2009-11-17 21:29
0
游客
登录 | 注册 方可回帖
返回
//