电子数据取证-计算机系统概论

admin 2023年2月16日22:12:42评论40 views字数 7443阅读24分48秒阅读模式
免责声明
写在前面:内容仅用于学习交流使用;由于传播、利用本安全猎人所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号安全猎人安全及作者不为承担任何责任,一旦造成后果请使用者自行承担!如有侵权,请及时告知,我们会立即删除并致歉!


续第一章电子取证流程与技术后,第二章为枯燥的计算机概论知识,主要介绍计算机组成部分,组成原理,及存储方式,接下来让我们继续,嘿嘿~



第二章 计算机系统概论

2.1 计算机组成

现代计算机由软件和硬件组成;

硬件包括:中央处理器(cpu)、主内存存储器(内存)、输出/输入设备、辅助存储器(外存)、部件之间通信的总线;

cpu:负责接收和解码内存发来的指令;

cpu中有数个特殊单元,其中有一个为运算器(ALU),它通过少量寄存器对数字进行运算;

寄存器可以快速访问存储器中的数据和指令;

寄存器寻址机制与主存储器或随机存储器(RAM)的寻址机制不同;


计算机体系结构:

电子数据取证-计算机系统概论

根据与CPU的距离划分的计算机层级存储结构: 、电子数据取证-计算机系统概论



注:

一级存储指RAM。RAM是计算机中的主存储器,也称主内存。

RAM是什么

其实ram就是我们常说的运行内存,而不是用来存储数据的那个内存,运行内存越大机器运行压力越小,速度自然也就快了,也就是我们说的不卡了。

RAM简称运存,是一种在手机中用来暂时保存数据的元件,相当于电脑中的内存条。它可以随时读写,而且速度很快,通常作为作业系统或其他正在运行中的程式之临时资料存储媒介。RAM断电时将丢失其存储内容,故主要用于存储短时间使用的程序。按照存储信息的不同,随机存储器又分为静态随机存储器(Static RAM,SRAM)和动态随机存储器(Dynamic RAM,DRAM)。

RAM的 特点:

随机存取

所谓随机存取,指的是当存储器中的数据被读取或写入时,所需要的时间与这段信息所在的位置无关。相对的,读取或写入顺序访问(Sequential Access)存储设备中的信息时,其所需要的时间与位置就会有关系(如磁带)。

易失性

当电源关闭时RAM不能保留数据。如果需要保存数据,就必须把它们写入静态随机存取存储器一个长期的存储设备中(例如硬盘)。RAM和ROM相比,两者的最大区别是RAM在断电以后保存在上面的数据会自动消失,而ROM不会。

高访问速度

现代的随机存取存储器几乎是所有访问设备中写入和读取速度最快的,取存延迟也和其他涉及机械运作的存储设备相比,也显得微不足道。

需要刷新

现代的随机存取存储器依赖电容器存储数据。电容器充满电后代表1(二进制),未充电的代表0。由于电容器或多或少有漏电的情形,若不作特别处理,数据会渐渐随时间流失。刷新是指定读取电容器的状态,然后按照原来的状态重新为电容器充电,弥补流失了的电荷。需要刷新正好解释了随机存取存储器的易失性。

对静电敏感

正如其他精细的集成电路,随机存取存储器对环境的静电荷非常敏感。静电会干扰存储器内电容器的电荷,引致数据流失,甚至烧坏电路。故此触碰随机存取存储器前,应先用手触摸金属接地。

一级存储指RAM。RAM是计算机中的主存储器,也称主内存。主内存用于存储正在 运行的程序和程序使用的数据2。我们可以将-级存 储理解为包含位数组的存储单元序列, 其中每个位代表一个值。在硬件中,存储单元中的数据表现为开或关的电信号。从数值上说,用1和0分别表示开或关两种状态,这就是二进制数。这些存储单元具有唯一一的地址(或数组索引),这样软件指令就可以识别并引用它。一个8位(bit)的序列叫作一个字节 (byte)。由于一个标准单元存储一个字节的内存,因此它也被称为字节可寻址内存。每个地址代表一个字节的内存或指向主内存中的一个内存地址。

存储地址根据其存储字节的大小,可划分出不同类型。如半字节(nibble) 可寻址内 存,每个地址存储半个字节;位可寻址内存,每个地址存储一一个位;字( word)可寻址内存,每个地址存储一个字。

由于RAM是计算机的一级存储器而不是二级存储器,因此存储的数据容易消失。但是,其访问数据的速度却比硬盘等二级存储器快数百倍,这就是运行的程序被加载到随机存取器中可以实现无缝处理的原因。从某种意义上说,RAM中的所有数据都易丢失,数据会随着时间的推移而消失。不同类型的数据的稳定性各不相同,某些数据相比其他数据更易丢失。例如,内存里的数据将在纳秒级别内消失殆尽,运行进程大约需要数秒。因此,当计算机关机时,就要通过二级存储器来存储程序和数据。二级存储设备有很多种, 最常见的是硬盘。运行时,硬盘中的数据并不是一次性 全部加载到系统中。实际上,-台计算机通常有比主内存更大的硬盘,用来补充存储未使用程序所需的内存空间。例如,在市面上购买的计算机可能带有2TB的硬盘,但内存却只有16GB。

随着越来越多的可移动存储介质(如备份磁带驱动器、光盘和闪存驱动器等)上市,解决了如何存储不常访问的存档数据的问题。这类存储介质被称为三级存储器,为计算机提供第三级存储空间。由于运行速度比二级存储器更慢,因此三级存储器主要用于在无人操作的情况下存储不常访问的数据。数据在被使用前,要先复制到二级存储器。如果要读取第二级储存器中的数据,计算机先要询目录数据库,以确定数据在哪个磁带或光盘中,然后使用机械臂从该存储介质所在磁带库或光盘库中的位置进行存取。

不同于其他存储方式,脱机存储离开人工操作就无法进行数据访问。脱机存储主要在二级或三级存储设备中进行录入,其设备必须由人工插拔。由于方便携带和使用,脱机存储器可以用来传输信息。此外,对一些针对计算机的攻击行为,脱机存储可以提高数据安全性,因为在无人为操作的情况下,计算机在物理上无法访问脱机存储设备。PC的大多数二级和三级存储介质也用于脱机存储。

在过去的十年中,硬盘等存储设备的容量快速增加,仅用字节已无法表示计算机的存储容量。现在市面上存储容量超过1TB的计算机或存储设备很常见。因此,我们需要使 用不同的测量单位来区分计算机存储容量的大小,如千字节(kilo-byte)、 兆字节(meg- byte)和千兆字节(giga-byte) 等。图2.3展示了各单位之间的关系。这些单位可以通过缩写来表示,例如,KB、MB、GB、TB等。

计算机系统中使用的kilo (KB)有两种 约定表示:在十进制系统中使用的KB, K 的大小是1000, 1KB 相当于1000个字节;在二进制系统中使用的KB,K的大小是1024,1KB相当于1024个字节。虽然这两个不同的约定都使用KB,但它们的硬盘驱动器大小却是不同的。本规则适用于数据大小的所有测量单位。

由于各硬盘制造商选择的约定规则不同,因此人们可能会对其具体使用的是哪种测量单位产生误会,对于希捷的客户来说尤其如此。一位客户曾被产品标签误导,该标签。上显示的容量大于实际容量,实际容量减少大约7.4%。希捷公司在被起诉后,对该客户进行了赔偿31。为了减少混淆,美国电气 和电子工程师协会(IEEE)提供了一个参考指南,帮助区分十进制k (1000)和二进制K(1024)。例如,k指十进制的千字节,K"指二进制的千字节。然而,并不是所有人都严格遵守这些约定。本书中采用1024的约定。

 电子数据取证-计算机系统概论


2.2 数据表示

数据由编码表示。将信息或数据转换为代码的过程叫作编码,将代码还原为信息或数据的过程叫作解码。将数据以数字1和0进行编码有许多常见的方法,这个过程就是数据表示。在本书中,我们主要讨论以下几种数据表示:

无符号整数(例如,非负整数)

有符号整数(例如,负整数、正整数和零)

浮点数(例如,实数的近似值)

字符(例如,ASCII、Unicode )

有许多数据类型和复杂数据都是建立在基本数据类型之上的。通过理解一些基本数据就能够构建和解构数据。字节排序和字节对齐在电子数据取证中非常重要,我们将在本节进行讨论,因为无论是有符号整数,整数都是最常见的数据类型。

一个存储单元或存储位置可以存储一一个字节的数据,称为字节可寻址内存。这意 味着一个存储地址表示一一个字节的内存。因此,如果要将一个字存储到内存中, 就要将32 位的存储容量分成4个字节。通过8次1和0之间的转换,这样一个字节就有256(2")种 编码可能性。其中的每一个字节都对应于0~ 255间的一个整数。在十进制中,178 可以 被表示为1x 102+7x10'+8x10%。我们以0b表示一个数以2为基数。如果以二进制数表示178,就是0b10110010。将十进制数转换为二进制数,最简单的方法是使用转换表。从29=1开始,从右到左依次列出2的幂,然后递增,直到2=128。使用排除法,我们算出与178匹配的最大幂值是128。当一个数字匹配时,就是1位;不匹配,则为0位。基于此,我们记下1位,然后用178减128得到50,再将50作为新的数字进行比较。我们向右推进并重复这些过程,直到不再有基底为2的数可以进行比较。为了验证我们是否正确地将十进制数转换为二二进制数,可以将所有与二进制值为1的位对应的十进制数字相加。例如, 128+32+ 16+ 2=178,如表2.1所示。最后的结果表明,我们已正确地将十进制数转换为二进制数。

使用二进制向计算机写入数据既冗长又麻烦,于是我们采用了更高效的数据表示。将 一个字节一分为二, 每个有4位,即半字节。一个半字节可以有16种状态,这些状态可以 用十六进制的字符来表示。对于- 个十六进制的位(igi), 通过十进制数字表示09,用字母A~F表示10~ 15。十六进制允许我们将一个字节用2个十六进制位表示,而不足8个二进制位。我们使用0x表示一个数字以16为基数。例如,十进制数178的十六进制数据表示是0xB2,如表2.2所示。我们把二进制转换中计算出的8个位分成两部分,进 而推导出这个十六进制数,参见表2.3。一般来说, 一个数可以用任何基底(也称为基数) b表示。格式如下:

电子数据取证-计算机系统概论 

其中d为数字,也是一一种符号,表示0和基底b-1之间的整数。这里的符号表示一个以b为底的非负整数,按照公式计算等于:

 电子数据取证-计算机系统概论

178₁₀的二进制

基底为2

128

64

32

16

8

4

2

1

二进制

1

0

1

1

0

0

1

0

178₁₀的十六进制值

二进制

1011

00010

十六进制

0xB

0x2

转换表

二进制

十进制

十六进制

0000

0

0

0001

1

1

0010

2

2

0011

3

3

0100

4

4

0101

5

5

0110

6

6

0111

7

7

二进制

十进制

十六i年至

1000

8

8

1001

9

9

1010

10

10

1011

11

11

1100

12

12

1101

13

13

1110

14

14

1111

15

15

注意,有时可以省略公式中的括号,标记为dridhesdh-sdsdidow。

例如,在数宇(1234567)。中,1234567 是数字,8是基数。

目前通行的字符编码方案,如美国信息交换标准代码(ASCII),将数字0~9字母a~2或A~乙、基本标点符号和空格映射为二进制整数。以A为例,当编码为十进制

时,它的值为 65。如果转换为十六进制,其值为 0x41。

ASCII 码的数据表示一般是7位,但表示为8位也很常见。8位数据表示扩展了原始的字符映射,方法是在由7位组成的第一组128个字符的基础上添加额外的字符。

如果使用美式英语,ASCII 码既好用又简单。但是对于世界上的其他语言来说,ASCII码就很有局限性,例如,希腊字母和汉字中的一些特殊符号就无法 表示。Unicode 码使用超过1个字节来存储符号的数字版本,从而解决了这个问题,因为 Unicode 码使用多个字节,所以具有比 ASCII码更好、更大的字符数组。Unicode码可以编码为8、16或 32 位的二进制格式,称为 UTF-8、UTF-16 和UTF-32。那么这些多字节数值是如何在内存中排列的呢?


2.3 内存对齐和字节顺序

内容的重点是内存对齐,有时也称为数据对齐。内存对齐规定了数据是如何在计算机内存中被排列和访问的。CPU 每次以2、4、8、16或32字节的数据块分发数据,分发的字节越大,计算机从内存访问数据的速度就越快。例如,一个32位处理器需要一个4字节的整数驻留在一个能被4整除的内存地址上。这个需求被称为内存对齐。在上一个数据块的末尾和下一个数据块之间填充未使用的字节,能确保数据对齐,达到优化数据传输的目的,同时减少缓存失败和总线交换。换句话说,访问未对齐的结构会降低计算机的总体性能。我们以一个使用字节地址的内存为例。计算机会将32位的数据分成 4字节大小的数据块,并将它们依次排列。这意味着如果第一个字节存储在 0x1000 处,那么接下来的一个字节将存储在 0x1001、0x1002 和 0x1003 的偏移处。由于数据一次分成4个字节,内存地址不能从 Ox1001、0x1003 或 Ox1005这样的内存地址开始,因为它们不能被 4整除。注意,按顺序存储数据不能适用于所有情况,因为在内存中分发和存储多字节有两种方法。这就是字节顺序,后续将对此进行介绍。但首先,我们必须理解为什么现代处理器被限定在粒度上访问内存。

内存未对齐会导致硬件复杂化,因为存储器通常在字边界(word boundary)上对齐。

未对齐的内存访问将引出多个对齐的内存引用。图2.4分别展示了数据对齐和末对齐这两种情况。在这两种情况中,CPU 都会访问4字节的数据块,即CPU 从内存中读取 4 字节。

总之,数据是在计算机内存中被排列 (或如下例所示,按4 字节对齐)和访问的。

 电子数据取证-计算机系统概论

上图左侧显示了数据对齐的情况,右侧显示了数据末对齐的情况。对于第二种情况,CPU 不得不执行额外的运算以读取数据:加载两个数据块,移出不需要的字节,然后将它们组合在一起,如图 2.5所示。因此,为了从内存中正确地检索数据,读取未对齐的数据会降低CPU的数据访问性能,浪费CPU的工作周期。

 

电子数据取证-计算机系统概论

一般来说,位于A地址且大小为。字节的对象,如果满足公式 A mod s=0,那么我们认为 A 地址的数据是对齐的。下面举例说明。在表25中,第3行占用4字节的内存,第4行占用了字节的内存,第5行占用 4字节的内存。这些字节数不是随机的,而是根据数据类型得出的。由此可以得出结论,结构体类型对象 Student 在内存中占据 11个字节(4+3+4)。然而,11 不能被4整除(假设使用的是通用的32 位 x86 处理器)。因此,编译器将添加一个未使用的填充字节使结构体分配 12 字节而非11字节的内存。这就是为什么一个结构体对象占据的大小通常大于该结构体实际所需的存储空间 。

可以通过使用命令"sizcof(struct Student) 〞 查看结构体类型所占内存空间的实际大小。

采用英特尔处理器的系统仍然可以在数据结构未对齐的情况下运行,而在一些 UNIX系统中,如果数据结构未对齐,则会导致总线错误。如表2.5 的结构体案例所示,大多数编译器会根据数据变量的类型和使用的特定 处理器自动对齐数据变量来解决这个问题。这种方式也适用于联合对象或类对象。

在系统中,名字节数据元素的字节可以根据其在字节可寻址存储器中的存储顾序进行排列。这就是字节顺序(或字节排序)。当前有两种通用的字节顺序类型:

。小端字节顺序 ( little-endian)

。大端字节顺序 (big-endian)

endian 这个词源于乔纳森斯威夫特的小说《格列佛游记》。在书中,他描写了一场愚蠢的辩论如何引发了一场激烈的战争,这场辩论在喜欢从小端 (litle-endian)敲开煮鸡蛋的人和喜欢从大端 (big-endian)敲开煮鸡蛋的人之间进行。

从哪一端敲开鸡蛋是件微不足道的事情,但是在计算机架构中,人们对排序方案也是争论不止。最初人们按照大端字节顺序进行编码,但徽软成立后,决定采用小端字节顺序。

所有 x86、x64、x32 的操作系统架构都采用小端字节顺序。现在,这两种排序方案都被广泛地使用。例如,像IBM 360/370、摩托罗拉、Suns.68 k、MIPS、Spare 和惠普等处理器采用大端字节顺序,它们主要用于通用主机和大型计算机。采用小端字节顺序的有英特尔 80x 86、 DEC Vax、DEC Alpha 和 SuperH。当然也有像 MIPS 和英特尔 64 1A-64 这样同时使用大端和小端字节顺序的架构。无论采用哪种方式,理解小端和大端字节顺序都很重要,因为一个不正确的字节可能会使整台机器崩溃。当两台使用相反字节顺序的机器通过网络互相发送数据时,情况更是如此,因为数据会按错误的顺序被读取。内存中有高地址和低地址。小端字节顺序将最低有效字节(低地址)优先存储在最小地址中,从右向左读取。大端字节顺序将最高有效字节(高地址)优先存储在最小地址,从左

向右读取。

为了完全理解这两个不同的字节排序概念,我们将使用 4字节数 90, AB, 12,CD作为示例,其中每个字节需要2个十六进制数字,参见表2.6。

 

显然,如果从低地址到高地址读取按小端字节顺序存储的内容,可以获得 CD 12 AB 90。但我们必须进行翻转,以获得实际值 0x90AB12CD。这时一个数字的低位字节(最低有效字节)存储在内存的最低地址,高位字节(最高有效字节)存储在内存的最高地址。

类似地,该方法也能解决通过网络传输数据的问题。当网络检测到特定计算机的字节顺序方案时,会使用网络字节顺序对存储在连续内存位置的字节重新排列。不同计算机通过网络进行数据交换时也有类似问题。这时就需要 XDR(外部数据表示)发挥作用了。外部数据表示是一种标准的数据序列化格式,它独立于传输层,允许数据在不同类型的计算机系统之间传输回。从局部表示转换成外部数据表示的过程称为解码,从外部数据表示转换成局部表示的过程称为解码。它使用 4字节的基数,并按大端字节顺序排序。变量将被4个字节的可整除数填充,

附录:

gdb基本使用



第二章~完结~~

关注公众号,后续更精彩~

欢迎师傅们加入我的 安全猎人的小屋(添加好友备注加群),一起学习进步~后面不定期发布更多资源,更多惊喜等着大家。

电子数据取证-计算机系统概论

欢迎 点赞 + 在看、分享本公众号 给更多师傅们哈

❤️

----------------往期精选-----------------

电子数据取证-电子取证流程与技术

电子取证流程与技术

取证常用工具

物联网安全测试合集

apk安全测试常用工具

代码审计报告模板

数据加密-密码学

apk安全测试笔记


注:

封面来源于壁纸网站:http://www.netbian.com/s/chaogaoqing/


原文始发于微信公众号(安全猎人):电子数据取证-计算机系统概论

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月16日22:12:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   电子数据取证-计算机系统概论http://cn-sec.com/archives/1278127.html

发表评论

匿名网友 填写信息