2.利用frida + seccomp方式,通过Process.setExceptionHandler来捕获SECCOMP_RET_TRAP信号,并且为了避免hook时死循环递归(hook函数中调用svc又再次被seccomp过滤发出SECCOMP_RET_TRAP信号),该项目通过创建新线程的方式来规避,但这种方式在处理多线程或者多进程任务时处理起来很麻烦。 本文的通用hook svc方法与第二种类似,主...
SECCOMP_RET_ALLOW - 允许继续使用系统调用 SECCOMP_RET_KILL - 终止系统调用 SECCOMP_RET_ERRNO - 返回设置的errno值 SECCOMP_RET_TRACE - 通知附加的ptrace(如果存在) SECCOMP_RET_TRAP - 往进程发送 SIGSYS信号 最多只能有4096条命令 不能出现循环 Seccomp-BPF程序 接收以下结构作为输入参数: 代码语言:javascrip...
SECCOMP_RET_ALLOW:允许执行 SECCOMP_RET_KILL:立即终止执行 SECCOMP_RET_ERRNO:从系统调用中返回一个错误(系统调用不执行) SECCOMP_RET_TRACE:尝试通知ptrace(), 使之有机会获得控制权 SECCOMP_RET_TRAP:通知内核发送SIGSYS信号(系统调用不执行) 每一个seccomp-BPF程序都使用seccomp_data结构作为输入参数: /include/...
SECCOMP_RET_ALLOW:允许执行 SECCOMP_RET_KILL:立即终止执行 SECCOMP_RET_ERRNO:从系统调用中返回一个错误(系统调用不执行) SECCOMP_RET_TRACE:尝试通知ptrace(), 使之有机会获得控制权 SECCOMP_RET_TRAP:通知内核发送SIGSYS信号(系统调用不执行) 每一个seccomp-BPF程序都使用seccomp_data结构作为输入参数: /include/...
seccomp的具体用法可以参考「什么是seccomp」中的seccomp介绍文章。当返回规则设置为「SECCOMP_RET_TRAP」,目标系统调用时seccomp会产生一个SIGSYS系统信号并软中断,这时就可以通过捕获这个SIGSYS信号获得svc调用和打印具体参数。 如何脚本化安装seccomp规则呢 这里使用Frida的API「CModule」,CModule提供强大的动态编译功能可...
SECCOMP_RET_TRACE-通知附加的ptrace(如果存在) SECCOMP_RET_TRAP-往进程发送 SIGSYS信号 最多只能有4096条命令 不能出现循环 Seccomp-BPF程序 接收以下结构作为输入参数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /** *struct seccomp_data-theformatthe BPF program executes over. ...
seccomp的具体用法可以参考「什么是seccomp」中的seccomp介绍文章。当返回规则设置为「SECCOMP_RET_TRAP」,目标系统调用时seccomp会产生一个SIGSYS系统信号并软中断,这时就可以通过捕获这个SIGSYS信号获得svc调用和打印具体参数。 如何脚本化安装seccomp规则呢 这里使用Frida的API「CModule」,CModule提供强大的动态编译功能可...
利用frida + seccomp方式,通过Process.setExceptionHandler来捕获SECCOMP_RET_TRAP信号,并且为了避免hook时死循环递归(hook函数中调用svc又再次被seccomp过滤发出SECCOMP_RET_TRAP信号),该项目通过创建新线程的方式来规避,但这种方式在处理多线程或者多进程任务时处理起来很麻烦。
seccomp的具体用法可以参考「什么是seccomp」中的seccomp介绍文章。当返回规则设置为「SECCOMP_RET_TRAP」,目标系统调用时seccomp会产生一个SIGSYS系统信号并软中断,这时就可以通过捕获这个SIGSYS信号获得svc调用和打印具体参数。 如何脚本化安装seccomp规则呢 这里使用Frida的API「CModule」,CModule提供强大的动态编译功能可...
SECCOMP_RET_TRAP: 发送一个可捕获的SIGSYS SECCOMP_RET_ERROR: 指定errno的值并返回 SECCOMP_RET_TRACE: 由被附加的ptrace tracer裁决 SECCOMP_RET_ALLOW: 允许这个系统调用继续 随着内核发展,返回值也在变化,5.17版本上已经有更多的返回值,可以参考内核文档。