用于 Linux 的 ARM shellcode - svc 0 与 svc 1

逆向工程 手臂 外壳代码
2021-06-09 11:19:58

查看 Linux ARMshellcode 我看到系统调用是通过使用svc 1指令进行的。但是,我也看到过将它们用作调用系统调用的指令的示例svc 0

显然,Linux 上的系统调用ARM可以同时使用svc 0svc 1为什么会出现这种情况,而不是像x86. 这两条指令产生的中断类型是否相同?

1个回答

我想你应该检查部分ARM文档,以及它的描述svc和它的参数。通过交叉引用这两个链接,您将找到问题的答案。

从上面的链接中,您将能够了解svc指令的参数代表什么。它应该被忽略,CPU但异常处理程序可以使用该参数来确定所请求的服务:ARM如果值在 0 和 16777215 之间,Thumb则为指令,如果值在 0 和 255 之间则为指令。

Thumb 指令集是一种紧凑的 16 位 ARM 指令编码。它主要是为紧凑的代码密度而设计和实现的。您可以查看有关架构维基百科页面以ARM获取更多信息,但我建议您阅读ARM文档以获取准确的技术细节。