当前位置: 首页 > news >正文

用户进程的借壳挂靠之术

前面写了一篇 内核线程的借壳生存之术 挺有趣,有朋友评论提出 ”某后台程序进程挂靠到另一个程序上运行是否可以干点事情”,所以说这题目还是狭隘了。

并不是只有内核线程才能借壳生存,任意两个 task_struct 对象比如两个用户态进程都可以。而要做的只是稍微调整几个指针,比如改成下面这样:

// spro,挂靠者;tpro,被挂靠者
spro->group_leader = tpro->group_leader;
spro->tgid = tpro->tgid;
spro->real_parent = tpro->real_parent;
spro->parent_exec_id = tpro->parent_exec_id;
spro->exit_signal = -1;
spro->signal = tpro->signal;list_add_tail_rcu(&spro->thread_group, &spro->group_leader->thread_group);
list_add_tail_rcu(&spro->thread_node, &tpro->signal->thread_head);

return -EINVAL; // 不让模块加载,不然还要卸载,麻烦

效果就是下面的形式:
在这里插入图片描述

照这个做法,可以做点正面的事,比如借鸡生蛋,代孕,将经理的结果说成是自己的。

但你仍然无法访问目标进程的地址空间,因为你们的 vm 仍然是独立的,若要访问目标进程地址空间,必须亲自映射它。

之所以在 Linux 系统可如此简单挂靠却又不能随意共享挂靠资源,在于 Linux 内核对 task 的组织结构是一个典型的组合代理模式。

无论进程还是线程,都是 task_struct,靠 list,tree 组织成高层抽象执行体,而 vm,file 等作为资源属性根据组织形式在 task_struct 间独享或共享,这就是一个组合代理模式实例:
在这里插入图片描述

与组合模式的树形递归结构不同的是,Linux 的 task_struct 模型更偏向资源共享的扁平化组织,通过指针共享资源,而非嵌套包含。

task_struct 的这种组织形式类似公司组织架构,部门间可共享资源也可资源隔离,项目组随时成立,员工自由加入和退出还可转岗,总经理有权将公司组织成任意结构,由此类比,就可理解为什么只需要调换几个字段,就可以实现进程挂靠,却又不能自由共享资源了。

浙江温州皮鞋湿,下雨进水不会胖。

http://www.dtcms.com/a/266761.html

相关文章:

  • JAVA-springboot 整合Redis
  • 大数据在UI前端的应用创新研究:基于图神经网络的用户关系网络分析
  • [C++] C++多重继承:深入解析复杂继承关系
  • Blob分析及形态学分析
  • AWS 中如何添加一个内部域名
  • Spring AI Alibaba 来啦!!!
  • 本地区块链服务在物联网中的应用实例
  • M30280F8HP#U5B 瑞萨16位工业MCU微控制器,CAN 2.0B+专用PWM,电机控制专家!
  • 使用mindie:2.0.RC2-800I-A2-py311-openeuler24.03-lts制作一个通用的模型推理性能测试的镜像
  • Flynn分类法知识点梳理
  • 微服务架构的演进:迈向云原生
  • 【Spring Boot】Druid 连接池 YAML 配置详解
  • 马尔可夫链:随机过程的记忆法则与演化密码
  • 在LinuxMint 22.1(Ubuntu24.04)上安装使用同花顺远航版
  • 力扣刷题记录【1】146.LRU缓存
  • 【机器人】复现 DOV-SG 机器人导航 | 动态开放词汇 | 3D 场景图
  • 设计模式-应用分层
  • 【狂飙AGI】第8课:AGI-行业大模型(系列2)
  • NumPy-核心函数np.dot()深入理解
  • 【三维重建】【3DGS系列】【深度学习】3DGS的理论基础知识之高斯椭球的颜色表达
  • 鸿蒙开发BindSheet选择章节效果
  • 服务器间接口安全问题的全面分析
  • 数据集-目标检测系列- 卡车 数据集 truck >> DataBall
  • 代码随想录算法训练营第四十六天|动态规划part13
  • 【LeetCode 热题 100】238. 除自身以外数组的乘积——(解法一)前缀积与后缀积
  • 算法学习笔记:7.Dijkstra 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 物联网数据安全区块链服务
  • AI Agent意图识别
  • 二维码驱动的独立站视频集成方案
  • Mysql+neo4j创建节点和关系