SVC指令
SVC(systemcall)是Linux内核的入口,当代码进入内核态时,就开始执行内核的代码,用户是无法对内核进行操作的。
内核函数,诸如open、read函数这些Linux底层的函数,最终会调用system_call函数切换到内核态,也就是SVC指令,在ARM汇编进行反编译的时候直接进入内核模式。在用户空间时,代码是不安全的,有可能被hook,而在代码通过SVC进入内核空间,代码是不能被hook的,因为进入内核的内存是无法进行读写的。所以很多读取设备信息都通过SVC指令进行读取,无法被HOOK,这种也叫做SVC穿透(可以通过ptrace函数来解决穿透问题,ptrace是Linux调试的函数,它的权限是最高的,它连内核的函数都可以拦截的)
内联汇编
在C/C++代码当中插入汇编代码就叫做内联汇编。