大端序与小端序

开端

刷题遇见了IDA小端序的逆序存储,上网查了很多资料,终于搞懂了大端序顺序以及小端序的逆序存储。

大端序与小端序

在编程语言中,一个字节占8位。在16进制中,一个字节可以表示两个16进制数。因此字节分为高位字节与低位字节。16进制数中越靠近左边的字节越高,越靠近右边的字节越低。

计算机系统中有两种不同的存储方式,大端序与小端序。

  • 大端序:
  1. 大端序系统中,数据的最高有效字节存储在最低地址中,最低有效字节存储在最高地址中。因此数据的字节顺序是从高位到低位,即高位在前,低位在后。

  2. 大端序类似于将数据按照人类的阅读习惯从左到右进行存储

  • 小端序:
  1. 小端序系统中,数据的最低有效字节存储在最低地址中,最高有效字节存储在最高地址中。因此数据的字节顺序是从低位到高位,即低位在前,高位在后。

  2. 小端序的设计更加符合硬件设计的需求,因为可以更容易的访问数据的低位和高位部分。

举例

假设一个四字节的整数0x12345678,在大端序与小端序的系统中的存储方式如下。

  • 大端序系统

    • 地址0:0x12(最高有效字节)

      地址1:0x34

      地址2:0x56

      地址3:0x78(最低有效字节)

  • 小端序系统

    • 地址0:0x78(最低有效字节)

      地址1:0x56

      地址2:0x34

      地址3:0x12(最高有效字节)

接下来结合实例进行介绍

在这里插入图片描述
上述为IDA反汇编后v10的16进制数据,根据上述的介绍,我们知道计算机系统存储分为大端序与小端序。我们打开数据内存中的16进制数据,发现
在这里插入图片描述
刚好与v10存储的数据相反,可以识别出为小端序逆序存储。
在这里插入图片描述

我们将数据格式改为8字节64位

在这里插入图片描述
发现内存中数据与v10存储数据一致,验证IDA为小端序逆序存储。
我们将v10数据转为字符类型

在这里插入图片描述
则v10=‘hadow’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值