1 PAC

AMR64提供了PAC(Pointer Authentication Code)机制。

所谓PAC,简单来说就是使用存储在芯片硬件上的「密钥」,一个「上下文」,与「指针地址」进行加密计算,得出一个「签名」,将这个「签名」写入指针的高bit上。

计算出来的「签名」之所以可以写入指针的高bit,是因为在实际使用中,并不是所有指针64bit都会被使用,通常高bit都会被保留用来做其他用途。

如果在程序运行过程中,有人恶意的修改了指针地址,在后面将签名后的指针地址,作用于验证指令,就会报错。

验证过程和计算签名过程一样,只是比较前后计算的签名值是否一样。如果验证成功,签名就会从高bit上移除。

2 指令语法

PACIBSP

3 指令语义

上面指令对函数返回地址进行PAC,也就是对X30的值进行PAC,或者说对LR寄存器的值进行PAC

PAC过程中,有2种密钥,一种是密钥A,另一种是密钥B

指令PACIBSP中的B就代表使用密钥B,同时SP表示「上下文」使用的是SP寄存器的值。

下面是一个运行PACIBSP后,X30的值变化的例子:

// PAC 前
(lldb) p/x $x30
(unsigned long) 0x000000010817f7bc // PAC 后
(lldb) p/x $x30
(unsigned long) 0x3f57fc010817f7bc

从上面的输出可以看到,X30的高bitPAC后发生了变化。

4 同类指令

4.1 PACIB

PACIB <Xd>, <Xn|SP>

密钥: 密钥B

上下文: Xn寄存器的值或者SP寄存器的值。

指针地址: Xd寄存器的值

4.2 PACIB1716

PACIB1716

密钥: 密钥B

上下文: 寄存器X16的值。

指针地址: 寄存器X17的值。

4.3 PACIBZ

PACIBZ

密钥: 密钥B

上下文: 0

指针地址: X30寄存器或者说LR寄存器的值。

4.4 PACIZB

PACIZB <Xd>

密钥: 密钥B

上下文: 0

指针地址: 寄存器Xd的值。

4.5 密钥 A 指令

指令PACIASP PACIA PACIA1716 PACIAZ PACIZA除了使用密钥A进行PAC之外,其它都与对应的PACIB*指令一样。

一文搞懂 ARM 64 系列: PACISB的更多相关文章

  1. 一文搞懂所有Java集合面试题

    Java集合 刚刚经历过秋招,看了大量的面经,顺便将常见的Java集合常考知识点总结了一下,并根据被问到的频率大致做了一个标注.一颗星表示知识点需要了解,被问到的频率不高,面试时起码能说个差不多.两颗 ...

  2. 一文搞懂指标采集利器 Telegraf

    作者| 姜闻名 来源|尔达 Erda 公众号 ​ 导读:为了让大家更好的了解 MSP 中 APM 系统的设计实现,我们决定编写一个<详聊微服务观测>系列文章,深入 APM 系统的产品.架构 ...

  3. 一文搞懂RAM、ROM、SDRAM、DRAM、DDR、flash等存储介质

    一文搞懂RAM.ROM.SDRAM.DRAM.DDR.flash等存储介质 存储介质基本分类:ROM和RAM RAM:随机访问存储器(Random Access Memory),易失性.是与CPU直接 ...

  4. 基础篇|一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  5. 一文搞懂 Prometheus 的直方图

    原文链接:一文搞懂 Prometheus 的直方图 Prometheus 中提供了四种指标类型(参考:Prometheus 的指标类型),其中直方图(Histogram)和摘要(Summary)是最复 ...

  6. Web端即时通讯基础知识补课:一文搞懂跨域的所有问题!

    本文原作者: Wizey,作者博客:http://wenshixin.gitee.io,即时通讯网收录时有改动,感谢原作者的无私分享. 1.引言 典型的Web端即时通讯技术应用场景,主要有以下两种形式 ...

  7. 一文搞懂vim复制粘贴

    转载自本人独立博客https://liushiming.cn/2020/01/18/copy-and-paste-in-vim/ 概述 复制粘贴是文本编辑最常用的功能,但是在vim中复制粘贴还是有点麻 ...

  8. 三文搞懂学会Docker容器技术(中)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...

  9. 三文搞懂学会Docker容器技术(下)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 三文搞懂学会Docker容器技术(中) 7,Docker容器目录挂载 7.1 简介 容器目录挂载: 我们可以在创建容器的时候,将宿主机的目录与容器 ...

  10. 一文搞懂 js 中的各种 for 循环的不同之处

    一文搞懂 js 中的各种 for 循环的不同之处 See the Pen for...in vs for...of by xgqfrms (@xgqfrms) on CodePen. for &quo ...

随机推荐

  1. 预设型 DP

    预设型 DP <美好的一天>--青春学概论 한 잔 술에 취해 잠긴 목엔 沉醉于一杯酒 갈라지는 목소린 다시 带着沙哑的嗓音 두 잔 자기 전엔 기분 좋음 入睡前饮下第二杯让心情愉悦 ...

  2. 谈谈 Nginx 那点事【二】

    前言 在上一讲 谈谈 Nginx 那点事[一] 中,介绍了Nginx的安装及基本结构,今天将工作中Nginx的一些配置,及常用的场景做一些总结. 这一讲总结的内容主要是关于Nginx服务配置.静态资源 ...

  3. Goby漏洞发布 | CVE-2024-38856 Apache OFbiz /ProgramExport 命令执行漏洞【已复现】

    漏洞名称:Apache OFbiz /ProgramExport 命令执行漏洞(CVE-2024-38856) English Name:Apache OFbiz /ProgramExport Com ...

  4. .NET 6.0 + WPF 使用 Prism 框架实现导航

    前言 Prism 一个开源的框架,专门用于开发可扩展.模块化和可测试的企业级 XAML 应用程序,适用于 WPF(Windows Presentation Foundation)和 Xamarin F ...

  5. 【倒计时3天】“CSIG企业行”走进合合信息,大咖解密智能文档处理背后的底层技术及AI未来展望

    3月18日,由中国图象图形学会(CSIG)主办,合合信息.CSIG文档图像分析与识别专业委员会联合承办的"CSIG企业行"系列活动将正式举办,通过搭建学术界与企业交流合作平台,为企 ...

  6. ASP.NET Core – Custom Input formatters For Partial Update and Handle Under-posting

    前言 之前的文章有谈过关于 ASP.NET Core 处理 under-posting 的方式. 它会使用 class default value. 许多时候这可能不是我们期望的. 比如当我们想要 p ...

  7. Blazor静态服务端呈现(静态SSR)身份认证

    本文介绍 Blazor 静态服务端呈现(静态 SSR)模式下,用户登录身份认证是如何实现的. 1. SSR 简介 SSR 是服务器侧呈现,HTML 是由服务器上的 ASP.NET Core 运行时生成 ...

  8. 十种SQL的语法

    一.ORDER BY FIELD()自定义排序逻辑 ORDER BY FIELD(str,str1,...) 自定义排序sql如下: SELECT * from order_diy ORDER BY ...

  9. MyBatisPlus——简介

    概述 MyBatisPlus(简称MP)是基于MyBatisPlus框架基础上开发的增强型工具,旨在简化开发.提高效率 国内开发的技术 特性 无侵入:只做增强不做改变,不会对现有工程产生影响 强大的C ...

  10. 获取sql语句

    1.$model->_sql(); 方法实际执行的就是 $model->getLastSql(); 2.fetchSql fetchSql用于直接返回SQL而不是执行查询,适用于任何的CU ...