【基础】SVC指令

365bet体育投注网站 📅 2025-09-21 20:06:51 👤 admin 👁️ 3226 ❤️ 205
【基础】SVC指令

SVC 是ARM 架构中用于触发系统调用的指令。它类似于传统的 syscall 指令,主要用于在用户空间(user mode)和内核空间(kernel mode)之间进行上下文切换 作用:SVC 指令允许用户态程序请求操作系统提供的特权服务,通常是在用户程序需要执行特权操作(例如文件操作、内存分配等)时使用。执行流程:当执行 SVC 指令时,处理器会从用户模式切换到内核模式,操作系统会根据传入的参数和服务号决定执行哪个系统调用。执行完系统调用后,操作系统会返回并将控制权交还给用户程序。而在linux系统里面内存又分为内核态和用户态

SVC与中断

SVC 中断:当 SVC 指令被执行时,CPU 会触发一个中断,切换到内核模式,处理操作系统的服务请求。SVC 会提供一个中断号作为参数,这个参数通常用于指定要执行的系统调用编号(比如打开文件、创建进程等)。

返回机制:操作系统会执行完相应的服务后,将控制权返回给用户程序。在返回时,CPU 会恢复到用户模式。

Syscall(系统调用)Syscall(System Call)是用户程序请求操作系统提供服务的一种机制。它是用户空间与内核空间之间的接口。用户程序不能直接访问内核资源,所以需要通过系统调用来向内核请求访问资源、执行特权操作等。

作用:当用户程序需要执行特权操作时(例如访问硬件资源、修改内存保护、创建/删除文件等),它会发起一个系统调用。系统调用通常会由操作系统内核提供一组API来实现。

工作原理:

用户程序通过某种方式(比如调用一个库函数)发起系统调用。

操作系统通过一个受保护的机制(比如通过软件中断或特殊的指令)来进行切换,将执行权从用户空间转移到内核空间。

操作系统完成特定的操作后,返回执行结果并切换回用户空间。

Syscall函数里面的实现实际上就是一段汇编,这里面便是调用了svc这段指令。

它无法被inlinehook Hook,所以会极大的提高安全程度。(update:搜到 svc 指令地址,仍然可以 inlinehook)

12345678910111213BTI cMOV X8, X0MOV X0, X1MOV X1, X2MOV X2, X3MOV X3, X4MOV X4, X5MOV X5, X6SVC 0CMN X0, #1,LSL#12CNEG X0, X0, HIB.HI __set_errno_internalRET

本博客采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议(CC BY-NC-SA 4.0) 发布.

相关推荐

cpu利用率多少才算正常范围?大神来给你科普一下
365app官网下载

cpu利用率多少才算正常范围?大神来给你科普一下

📅 07-01 👁️ 3767
人效的概念、影响因素、计算方法以及提升策略
365app官网下载

人效的概念、影响因素、计算方法以及提升策略

📅 09-11 👁️ 5456