几个 Syscall 项目的学习记录
前言
最近复习了下 syscall,关于 syscall 的原理这里不会做太多的叙述,有很多文章说得很清楚了,这里主要记录下对几个开源 syscall 项目的学习。
什么是 Syscall简单来说,syscall 是一种绕过 EDR 用户态 hook 的方式,它通过获取系统调用号,并构造 syscall stub 的汇编指令直接进入内核态 API 调用,从而避免了用户态 hook 的检测。在使用这种技术时,也不可避免地引入了一些新的检测特征,如 syscall stub 中引入的硬编码以及基于栈回溯的 syscall 的调用方的检测等等,不同的 syscall 项目也提供了针对这类检测的不同绕过方式。此外,各个项目也在获取系统调用号的方式上有一些区别。基本的 syscall stub 如下:
代码语言:javascript代码运行次数:0运行复制mov r10,rcxmov eax,[系统调用号]syscallret登录后复制