一、目标
现在很多App不讲武德了,为了防止 openat 、read、kill 等等底层函数被hook,干脆就直接通过syscall的方式来做系统调用,导致无法hook。
应对这种情况有两种方案:
刷机重写系统调用表来拦截内核调用
inline Hook SWI/SVC指令
我们今天采用第二种方法,用frida来实现
内联汇编SWI/SVC做系统调用, syscall
frida inline hook
hook syscall
frida ArmWriter
frida typescript project
二、步骤
inline Hook 原理
. 备份SWI/SVC部分的指令,重写成为跳转指令
. 跳转到我们新的代码空间,把之前备份的指令执行一下。然后执行我们自己的逻辑。 (打印参数之类的)
. 跳回原程序空间,继续往下跑