网络黑客信息平台网:从零开始学反向之x86篇(二)
在本系列产品文章内容中,大家将为阅读者重新开始详细介绍x86构架下的反向工程技术性。
上一篇
假如必须查询全部课程内容的详细文件目录,请点一下下边联接,因为它不但提供了各节课程内容的介绍,另外提供了一节课所包含的主题:
女性朋友们,先生们,男孩儿、女孩们,每个年龄层的**们! 大家将要踏入一段将始终更改你日常生活的旅途!
要想非常好地了解汇编语言,必须学习培训很多的材料。
大家务必回应的第一个难题是:什么叫x86汇编语言?回答是一个向后兼容的汇编语言系列产品,它提供了对Intel 8000系列产品微处理器的兼容模式。它应用助记符表明CPU能够实行的命令。
x86微处理器的汇编语言能够与各种各样电脑操作系统相互配合应用。除开学习培训怎样用C程序编写以外,大家还将关键详细介绍利用Intel英语的语法的Linux汇编语言;大家会将C编码编译程序为汇编代码,并开展相对的剖析。
事实上,x86汇编语言适用二种英语的语法。在其中,AT&T英语的语法在Unix全球中占有主导性,由于这种操作系统在AT&T贝尔实验室开发设计的。反过来,Intel英语的语法最开始用以x86服务平台,因而,它在MS-DOS和Windows自然环境中占主导性。
就大家的目地来讲,在我们最后反编译或调节手机软件时,不论是在Linux還是Windows自然环境中,大家大多数情况下见到的全是Intel英语的语法。不管大家查验的是PE文件格式的Windows二进制文件還是ELF文件格式的Linux二进制文件,这全是尤为重要的。本实例教程后边将对于此事开展大量详细介绍。
彼此之间的关键差别是在AT&T英语的语法中,源操作数在目地操作数以前,而在Intel英语的语法中,目地操作数在源操作数以前。大家将在本实例教程后边更详尽地探讨这一点。
在您迈开大门口并后悔莫及踏入这一段旅途以前,记牢,一些基础的情况专业知识有利于我们在全部探寻全过程中不断进步。就现阶段而言,很多主题很有可能会令人费解,它是彻底一切正常的,由于大家才踏入新征程。
大家将关心Linux选编,由于Linux能够运作在多种多样硬件配置上,如手机上、pc机或商业服务网络服务器等。
除此之外,Linux也是开源系统的,具备丰富多彩的版本号。在本系列产品课程内容中,大家关键应用Ubuntu,它也是能够完全免费得到的。比较之下,Windows操作系统由微软中国有着和操纵的,全部的升级、安全更新和服务项目补丁下载都立即来源于微软公司;Linux则有着上百万的专业人员,她们能够完全免费提供同样的服务项目!
另外,大家还将关心32位系统系统架构,由于最后大部分恶意程序全是为32位系统系统架构撰写的,便于感柒尽量多的系统软件。另外,32位系统应用软件/恶意程序还可以在64位系统上运作,因而,大家将详细介绍32位系统构架。
在大家的下一节课中,大家将探讨二进制。您何不先冲到一杯咖啡,我觉得您会必须它的!
假如必须全部课程内容的详细文件目录,请点一下下边联接,因为它不但提供了各节课程内容的介绍,另外提供了一节课所包含的主题:
二进制是电子信息技术的基础。电子计算机中的二进制位,要不处在开启情况,要不处在关掉情况。换句话说,一个二进制位要不插电,要不沒有插电。大家将在之后的实例教程中深入分析这一点。
疑惑,茫然,大家将迈向何处?
不要害怕!二进制记数制来啦!关键的是要掌握,在二进制中,每一列的值是其右侧列的二倍,而且其数量为2,每一个多位上只有取2个数据之一,即便0和1。
在十进制中,以10为数量,假定大家有一个数据15,这代表着(1 x 10) (5 x 1)=15,因而,在这儿,5表明1的倍数,1表明10的倍数。
二进制以相近的方法工作中,可是大家如今的数量为2。上边的十进制数15,相匹配的二进制数为1111。下边,大家举例说明开展表明:
二进制数往往关键,是由于用它来替代十进制后,可以巨大简单化电子计算机和有关技术性的设计方案。二进制数系统软件非常简单的界定是,如上所述,只应用2个数据来表明电子计算机系统架构需要的数据,而不是应用数据1到9加0来表明这种数据。
在大家的下一课堂,大家将探讨十六进制记数制。事实上,其实很简单,事儿会越来越更令人激动!
假如必须查询全部课程内容的详细文件目录,请点一下下边联接,因为它不但提供了各节课程内容的介绍,另外提供了一节课所包含的主题:
如今,大家早已是二进制高手了,现在是时候处理记数制中的记数制了!
我们在二进制中掌握到,每一个数字意思一个位。如果我们把八个比特犬组成起來,便会获得一个字节。一个字节能够进一步细分化为它的最大4位和低4位。4位的组成便是一个“半字节数”。因为4个二进制位能够表明的十进制标值范畴为0到15,因而,这一数量为16的记数制会更便于应用。请记牢,在我们说数量16时,大家从0开始,因而0-15是16个不一样的数据。
这一令人激动的记数制被称作十六进制。大家应用这一计数制的缘故是,在x86选编中,用十六进制来表述二进制数字表示比别的一切计数制都需要非常容易得多。
十六进制与别的计数制都很类似,仅仅在十六进制中,每一列的值是其右侧一列值的16倍。十六进制的有意思之处取决于,大家不但有0、1、2、3、4、5、6、7、8、9,也有A、B、C、D、E和F,因而有16种不一样的标记。
使我们看一个简单的表格,看来一下十六进制和十进制的对应关系。
好的,我看到烟从你耳朵里冒出了,但是没事儿!在十进制中,全部的物品全是以10的幂来解决的。下边,使我们拿数据42为例子来科学研究一下它的十进制方式。
2 x 10 ^ 0=2
4 x 10 ^ 1=40
记牢,10的0次方是1,10的1次方为10,因此 ,2 40=42。
端起你的现磨咖啡,有趣的东西来啦!
如果我们搞清楚十进制便是一个以10为数量的记数制,大家就可以建立一个简易的公式计算,在其中b意味着数量。就这儿而言,b=10。
(2 * b ^ 0) (4 * b ^ 1)
(2 * 10 ^ 0) (4 * 10 ^ 1)=42
在二进制中,十进制值42相当于二进制值0010 1010,其关联以下所显示:
0 x 2 ^ 0=0
1 x 2 ^ 1=2
0 x 2 ^ 2=0
1 x 2 ^ 3=8
0 x 2 ^ 4=0
1 x 2 ^ 5=32
0 x 2 ^ 6=0
0 x 2 ^ 7=0
0 2 0 8 0 32 0 0=42 十进制
在十六进制中,全部的物品都以16的幂来解决的。因而,以十进制表明的值42便是以十六进制表明的值2A:
10 * 16 ^ 0=10
2 * 16 ^ 1=32
10 32=42 decimal=> 2A 十六进制
这等同于:
10 * 1=10
2 * 16=32
10 32=42 十进制 => 2A 十六进制
请记牢,十进制数10相当于十六进制数A,十进制数2相当于十六进制数2。在大家上边的公式计算中,在我们解决A、B、C、D、E或F时,大家必须将他们变换为相匹配的十进制值。
使我们再以十六进制数F5为例子,介绍一下变换全过程:
5 x 16 ^ 0=5
15 x 16 ^ 1=240
5 240=245 十进制 => F5 十六进制
使我们讨论一下二进制到十六进制的变换表:
关键的是要搞清楚:每一个十六进制的数据都占有4个二进制位,或是称为半字节数。在我们将C代码转换为汇编代码时,这一点将越来越尤为重要。
使我们换一种方法来对待这个问题。因此,使我们再解决一些十六进制数,并将他们变换为十进制数:
再度注重,F1CD能够开展以下所显示的简易变换:
D --- 13 x 1=13
C --- 12 x 16=192
1 --- 1 x 256=256
F --- 15 x 4096=61,440
13 192 256 61,440=61,901
十六进制加减法的工作方式以下所显示。从今天开始,全部十六进制数据的边上都将再加上一个英文字母“h”:
另一个事例是:
最后一个加减法实例以下:
如今,大家逐渐关键解读加减法:
你很有可能会问一下自己,为何这混蛋要花这么多時间去鼓捣这么多表明方式!回答是大家每一个人都能从下一个表明方式初中到不一样的物品。与十进制和二进制对比,我觉得展现十六进制的多种多样表明方式,以协助大伙儿了解他们的关联。
再继续学习下边的课程内容以前,您务必先搞清楚这儿讲的物品。假如您有一切疑惑,请在下面评价,我将十分愿意协助您!
下一课大家将探讨电源开关、晶体三极管和储存器。
在本系列产品文章内容中,大家将为阅读者重新开始详细介绍x86构架下的反向工程技术性。大量內容,敬请关注!
(未完待续)