此前在做一道app安全的题目时,发现里面有svc指令,如下所示,甚为疑惑,不知道它是啥东东。
LOAD:00007B28 MOV R12, R7
LOAD:00007B2C MOV R7, #0x7D ;
LOAD:00007B30 SVC 0
LOAD:00007B34 MOV R7, R12
LOAD:00007B38 CMN R0, #0x1000
上网搜索才知道这是arm linux下的系统调用。
上述代码的含义为:系统调用sys_mprotect的系统调用号是0x7D,将系统调用号存放到寄存器R7当中,然后应用程序通过svc 0产生软中断,陷入内核空间,完成mprotect的操作。