gpt4 book ai didi

assembly - ARM 汇编代码和 SVC 编号

转载 作者:行者123 更新时间:2023-12-02 21:43:04 26 4
gpt4 key购买 nike

在 ARM 汇编代码中我可以看到类似这样的东西......(特别是在 shellcode 中)

svc 0x0090003f
svc 0x001ff3bf
swi 0x0900ff0b

我知道“svc(或 swi)”是“主管调用”,如英特尔的“int 0x80”或“SYSENTER”。但是,我该如何解释“svc”数字?我在哪里可以得到它的信息列表?拇指'svc'指令怎么样?

arm的使用说明书好像没有解释这些……

有人可以帮助我吗?预先感谢您。

最佳答案

SVC值存储在ESR寄存器的16位低位

ARMv8 Architecture Reference D12.2.36“ESR_EL1,异常综合症寄存器(EL1)”表示如果 EC 位为 0b010101,则 ISS 字段记录在“HVC 或 SVC 指令执行异常的 ISS 编码”中。

该部分接着说低 16 位是 imm16,如果您查看 SVC 定义,它就是为 16 位参数指定的名称。

最后,您在问题中显示的 SVC 调用在 ARMv8 GNU GAS 中无效,因为它们大于 16 位。例如:

SVC 0xABCDE

正确地无法组装:

Error: immediate value out of range 0 to 65535 at operand 1 -- `svc 0xABCDE

可运行示例

这是一个简约的 aarch64 裸机可运行示例,它执行 SVC 并在处理程序期间打印出所有寄存器,包括 ESR https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b1bfd46efebabcba4f1ab1cbddf99611550e2dc2#arm-svc-instruction

关于assembly - ARM 汇编代码和 SVC 编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24162109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com