You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux进程注入技术疑问:共享对象与内存映射变化

关于Linux进程注入的两个疑问解答

1. 注入libc内存页后是否会产生COW副本?

是的,确实会生成独立的修改版实例。具体逻辑如下:

  • libc的内存映射权限为r-xp,其中p代表私有映射(PRIVATE),自带写时复制(COW)机制。
  • 原本多个进程会共享同一份libc的物理内存页来节省资源,但当你通过PTRACE_POKEDATA修改目标进程的libc页时,内核会触发COW机制:为目标进程单独复制出该页的物理副本,所有修改操作仅作用于这个私有副本。
  • 其他进程仍会使用原始的libc共享页,完全不受这次注入修改的影响。

2. 为什么/bin/sh替换了目标进程而非作为子进程存在?

这是因为注入的shellcode直接调用了execve("/bin/sh", ...)系统调用,而非先fork再执行exec:

  • execve的核心作用就是替换当前进程的整个地址空间:它会把当前进程的代码段、数据段、堆栈、内存映射全部替换为/bin/sh的内容,进程PID保持不变,但执行逻辑完全切换为shell。
  • 这种情况下不会创建新的子进程,因此pstree中看不到/bin/sh作为target的子进程,而是target进程本身被替换成了/bin/sh。

内容的提问来源于stack exchange,提问作者Raz Gavriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:27:25