当前位置: 首页 > news >正文

【软件安全】ARM64、x86、32 位与 64 位架构的区别、定义、应用背景

ARM64、x86、32 位与 64 位架构的区别、定义、应用背景软件安全实验(栈溢出、ASLR、缓冲区攻击等)


一、架构定义与关系

1. x86

  • 定义:最初由 Intel 8086/80386 演变而来的一系列指令集架构(ISA)。

  • 特点

    • 最初是 16 位,后来发展为 32 位(IA-32),再发展为 64 位(x86-64 / AMD64)。
    • 使用寄存器命名如 eax, ebx, esp, ebp, eip(32 位),在 64 位扩展为 rax, rsp, rbp, rip
  • 应用:PC、服务器的主流架构,尤其在 安全课程里常用来教学栈溢出和内存漏洞,因为教材和工具链成熟。


2. ARM / ARM64 (aarch64)

  • 定义:ARM 是 RISC(精简指令集计算机),ARM64 指的是其 64 位架构(正式名 AArch64)。

  • 特点

    • 移动设备、嵌入式、苹果 M1/M2 芯片都在用。
    • 寄存器统一为 64 位:x0 ~ x30sp(栈指针),x29(帧指针),x30(返回地址)。
    • 指令更简洁,能效比高。
  • 应用:智能手机(Android/iOS)、树莓派、苹果 Macbook (M1/M2/M3),以及部分云计算服务器。


3. 32 位 vs 64 位

  • 32 位:寄存器宽度为 32 位,寻址空间最大约 4GB。

  • 64 位:寄存器宽度 64 位,理论寻址空间可达 16EB。

  • 区别

    • 指针大小不同(32 位 4 字节,64 位 8 字节),影响栈布局、内存对齐。
    • 函数调用约定不同:x86 常用栈传参,ARM64 和 x86-64 常用寄存器传参。
    • 安全机制不同:64 位系统更容易启用 NX/DEP、ASLR、栈保护等现代防护。

二、在软件安全中的应用

1. 为什么教材多用 x86/32 位?

  • 32 位下的栈布局更简单,ebp/eip 连续保存在栈中,容易被溢出覆盖。
  • 攻击演示(如覆盖返回地址 → 跳转到 shellcode)更直观。
  • 很多经典漏洞利用手法(ret2libc、ROP)最早就是基于 IA-32 研究的。

2. ARM64 下的不同点

  • 没有 eip/esp/ebp,取而代之的是 pc/sp/x29/x30
  • 返回地址存在寄存器 x30 (LR),而不是直接压栈,这意味着溢出模式和保护机制不同。
  • ASLR/DEP 更常开,在 ARM64 上教材里的简单攻击往往会触发 “Bus error” 而不是 “Segmentation fault”。

3. 64 位安全机制增强

  • 更强的 ASLR:地址空间更大,随机化效果更好。
  • 更复杂的 ABI:函数调用用寄存器传参,减少了栈上的可控数据,降低了栈溢出的成功率。
  • 现代编译器默认防护:例如 -fstack-protector-pie 默认开启,需要显式关掉才能复现实验。

三、背景与应用场景

  1. 教学/研究

    • 大学课程和教材(比如你在 IFN657 课程做的实验)常要求用 32 位 x86,因为漏洞利用的原理更容易演示。
    • 但现在很多学生用 ARM Mac,只能借助虚拟机/交叉编译来还原 x86 环境。
  2. 现实中的软件安全

    • 现代系统(Windows 10/11、Linux 64 位、iOS、Android)基本都是 64 位。
    • 漏洞利用在 64 位下更复杂(需要绕过 ASLR/DEP/Stack Canary)。
    • ARM64 由于在手机普及,成为移动安全研究的重要对象(恶意 app、越狱、内核漏洞)。
  3. 攻防对抗

    • 攻击者会研究不同架构的调用约定、内存布局,以设计特定的 exploit。
    • 防御者利用 64 位环境的安全特性提高攻击难度。

四、总结对比表

架构位宽典型寄存器应用安全实验中的表现
x86 (IA-32)32eax, ebx, ecx, edx, esp, ebp, eipPC,教材实验栈溢出容易覆盖 eip,实验直观
x86-64 (AMD64)64rax, rbx, rsp, rbp, ripPC,服务器默认安全机制更强,利用更难
ARM3232r0-r12, sp, lr, pc旧手机/嵌入式栈溢出可能覆盖 lr(返回地址)
ARM64 (AArch64)64x0-x30, sp, x29(fp), x30(lr), pc手机、Mac M1/M2/M3返回地址在 x30,保护更多,常见崩溃是 Bus error

http://www.dtcms.com/a/347949.html

相关文章:

  • 个人搭建小网站教程(云服务器Ubuntu版本)
  • 【数据结构】二叉树的顺序存储、堆的实现及其应用:堆排序与Top-K问题
  • 以国产IoTDB为代表的主流时序数据库架构与性能深度选型评测
  • kanass V1.1.4版本发布,支持Mysql数据库、ubuntu安装与Mantis数据导入
  • Thonny+MicroPython搭建ESP32芯片开发环境
  • 代码性能测试——benchmark库
  • Elasticsearch Ruby 客户端故障排查实战指南
  • AI与SEO关键词协同优化
  • DBeaver连接SQL Server集成认证问题解决方案
  • xxl-job 启动后导致pod内存使用率持续增加
  • 从 Unity UGUI 到 Unreal UMG 的交互与高效实践:UI 事件、坐标系适配与性能优化
  • MATLAB 与 Simulink 联合仿真:控制系统建模与动态性能优化
  • C#_gRPC
  • RabbitMQ--消费端异常处理与 Spring Retry
  • 阿里云拉取dockers镜像
  • 在JavaScript中,比较两个数组是否有相同元素(交集)的常用方法
  • 今日科技热点 | AI加速创新,5G与量子计算引领未来
  • wpf之DockPanel
  • 3D打印机管理后台与RabbitMQ集成的业务场景
  • RabbitMQ面试精讲 Day 29:版本升级与平滑迁移
  • 【图像处理基石】基于 Python 的图像行人删除技术:实现街景无干扰化处理
  • 性能比拼: .NET (C#) vs. Fiber (Go)
  • Kaggle项目:一次 Uber 出行数据分析的完整思路
  • 高空作业安全监控难题突破!陌讯自适应识别算法实现安全带穿戴检测准确率↑93%
  • 深度学习——详细教学:神经元、神经网络、感知机、激活函数、损失函数、优化算法(梯度下降)
  • 大数据管理与应用系列丛书《数据挖掘》读书笔记之集成学习(1)
  • 基于PHP服装租赁管理系统/基于php的服装管理系统的设计与实现
  • 基于电磁频谱地图的辐射源定位算法复现
  • 算法训练营day60 图论⑩ Bellman_ford 队列优化算法、判断负权回路、单源有限最短路(修改后版本)
  • [两数之和](哈希表做法)