一文搞懂 ARM 64: AUTIBSP

1 PAC

有关PAC可以参看《一文搞懂 ARM 64: PACIBSP》

2 指令语法

AUTIBSP

3 指令语义

上面指令对寄存器X30或者说寄存器LR的值进行PAC验证。

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

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

// 验证前
(lldb) p/x $x30
(unsigned long) 0x3f57fc010817f7bc

// 验证后
(lldb) p/x $x30
(unsigned long) 0x000000010817f7bc

从上面输出可以看到,验证成功之后,指针高bit的「签名」被移除掉,指针恢复成原来的值。

4 同类指令

4.1 AUTIB

AUTIB <Xd>, <Xn|SP>

密钥: 密钥B

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

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

4.2 AUTIB1716

AUTIB1716

密钥: 密钥B

上下文: 寄存器X16的值。

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

4.3 AUITBZ

AUTIBZ

密钥: 密钥B

上下文: 0

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

4.4 AUTIZB

AUTIZB <Xd>

密钥: 密钥B

上下文: 0

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

4.5 密钥 A 指令

指令AUTIASP AUTIA AUTIA1716 AUTIAZ AUTIZA除了使用密钥A进行PAC验证之外,其它都与对应的AUTIB*指令一样。

posted @ 2024-11-13 02:04  chaoguo1234  阅读(11)  评论(0编辑  收藏  举报