linux - 关于信号处理程序中的非信号安全系统调用
问题描述
我正在尝试使用 ptrace 在 linux 中实现 CreateRemoteThread。主要问题是 mmap 和 clone 系统调用不是信号安全的,因此直接注入它们是危险的。
但是,如果我可以确保内核中没有该进程的待处理 mmap 和克隆系统调用呢?
例如,首先我附加目标进程的所有线程并检查 rip 的前 2 个字节是否为 0x0f 0x05(syscall)。如果是,则从 orig_rax reg 获取系统调用号并检查它是 9(mmap) 还是 56(clone)。如果是这样,我将 rip 中的地址设置为 0xcc(int3) 并继续该线程。当我从这些线程收到 SIGTRAP 时,应该完成这些系统调用,并且该进程中不应该有未挂起的 mmap 和克隆系统调用。
现在使用 mmap 和 clone 系统调用是否安全?
解决方案
推荐阅读
- sql-server - 在另一个 SQL Server 上执行备份时,事务日志文件大小结转
- python - 如何按列分组并选择一个按创建时间排序的对象
- google-bigquery - 如何在 node.js 中使用 OAuth2
- c# - 使用从单个参数派生的两个参数调用基本构造函数
- python - 在 Python WEB 页面上的 Imutils 导入中获取“未定义符号”
- javascript - 如何防止在满足条件之前提交表单?
- php - 为什么这个 array_search 返回 0
- php - 问题在 Wordpress 网站上预加载 CSS
- python - pip安装包后无法执行python脚本
- macos - 当 NSTextField 成为焦点时设置 selectedRange