首页 > 其他分享 >5.5.1 IPIPE劫持系统调用的流程与场景

5.5.1 IPIPE劫持系统调用的流程与场景

时间:2025-01-12 14:28:36浏览次数:3  
标签:劫持 调用 handle 5.5 hook syscall ipipe 场景 IPIPE

点击查看系列文章 =》 Interrupt Pipeline系列文章大纲-CSDN博客

原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!

5.5 IPIPE: Xenomai/Linux双核系统调用

5.5.1 IPIPE劫持系统调用的流程与场景

参考《5.1.2 内核层:ARM64 Linux系统调用的流程》,先回顾一下ARM64 Linux系统调用的过程:

第一步,从el0_sync跳转到el0_svc。

第二步,从el0_svc跳转到c函数el0_svc_handler

第三步,从el0_svc_handler调用el0_svc_common

第四步,el0_svc_common调用invoke_syscall

在第四步的el0_svc_common函数中,IPIPE是在调用invoke_syscall之前,调用ipipe_handle_syscall进行系统调用的劫持。下图展示的是Xenomai系统调用read的堆栈。

考虑所有因素,在ipipe_handle_syscall需要处理6种场景。在ipipe_handle_syscall函数中,设计了3个代码通路,来处理上述6中场景。

  • 代码路径‌:为了处理这些场景,ipipe_handle_syscall设计了三条代码路径:
    • 快速路径(Fast Path)‌:直接调用ipipe_fastcall_hook处理Xenomai系统调用。
    • 慢速路径(Slow Path)‌:通过__ipipe_notify_syscallipipe_syscall_hook函数处理,根据当前运行的domain(head或root)调用相应的处理函数。
    • 正常路径‌:对于Linux系统调用,直接返回给Linux内核处理。

ipipe_handle_syscall

6种场景的处理

Xenomai系统调用

(系统调用号>=0x1000 0000)

Linux系统调用

(系统调用号<0x1000 0000)

Xenomai实时线程

运行在Head domain

场景1:

ipipe_fastcall_hook

场景2:

__ipipe_notify_syscall

Xenomai实时线程

运行在Root domain

场景3:

__ipipe_notify_syscall

场景4:

__ipipe_notify_syscall

Linux线程

场景5:

__ipipe_notify_syscall

场景6:

正常返回给Linux处理

把上面的表格,对应到ipipe_handle_syscall函数的实现,就会发现代码的实现思路突然清楚了。 特别是场景6,一目了然,不需要展开。

在ipipe.rst中,代码通路ipipe_fastcall_hook又被称为快速处理路径(fast path),而__ipipe_notify_syscall又被称为慢速路径(slow path)。

为什么?

ipipe_fastcall_hook直接调用handle_head_syscall执行Xenomai的系统调用函数。

反观__ipipe_notify_syscall,逻辑比较复杂,用next/goto next反复调用ipipe_syscall_hook函数。在ipipe_syscall_hook函数中,如果当前是head domain则调用handle_head_syscall,如果当前是root domain则调用handle_root_syscall。

__ipipe_notify_syscall有个非常特殊的地方,在第一次调用ipipe_syscall_hook函数之前,总是把current domain改成head domain(第1229行)。这样在ipipe_syscall_hook函数中必然会调用handle_head_syscall。

本文总结:ipipe_handle_syscall劫持系统调用后,需要处理6中场景,分为3个代码路径进行处理:快速、慢速和正常路径!

接下来的章节会结合实例实际分析快速和慢速路径!

点击查看系列文章 =》 Interrupt Pipeline系列文章大纲-CSDN博客

原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!

标签:劫持,调用,handle,5.5,hook,syscall,ipipe,场景,IPIPE
From: https://blog.csdn.net/aspirestro/article/details/144962718

相关文章

  • X-Frame-Options响应头缺失--点击劫持漏洞原理和复现
    点击劫持漏洞原理和复现一、漏洞原理点击劫持(Clickbandit),主要是利用HTML中iframe便签可以透明的属性进行利用攻击,其原理是通过在原本的网页上覆盖透明的框架并使受害者在不知情的情况下进行点击。漏洞主要是由于未对referer字段来源进行检验。常常配合csrf和xss。图中,攻......
  • 骨折检测数据集,使用yolo,coco json,voc xml格式对1943张X片子照片进行标注,可识别骨折的
    1943总图像数 数据集分割训练组70%        1358图片有效集20%        381图片测试集10%        204图片预处理调整大小: 拉伸至640x640增强每个训练示例的输出: 290°旋转: 顺时针、逆时针、上下颠倒......
  • 5.5 Building ASTs
    Ofcourse,mostofthetime,whenyou'reparsingyoudon'twanttocomputeavalue,youwanttobuildupsomekindofdatastructure.Here'saquickexampletoshowhowthatisdoneinLALRPOP.First,weneedtodefinethedatastructurewe......
  • 什么是 DNS 劫持?
    什么是DNS劫持?DNS劫持又称域名劫持,是攻击者利用缺陷对用户的DNS进行篡改,将域名由正常IP指向攻击者控制的IP,从而导致访客被劫持到一个不可达或者假冒的网站,以此达到非法窃取用户信息或者破坏正常网络服务的目的。DNS劫持可用于DNS域欺骗或用于网络钓鱼(为了让用户访问......
  • mysql5.5安装
    回忆一下mysql5.5安装配置方法,整理mysql5.5安装配置教程笔记,分享给大家。MySQL下载地址:http://dev.mysql.com/downloads/installer/1、首先进入的是安装引导界面2、然后进入的是类型选择界面,这里有3个类型:Typical(典型)、Complete(完全)、Custom(自定义)。这里建议 选择“自定......
  • SY8089 兼容代替 MT3520B SOT23-5 5.5V、2A、2MHz,同步降压转换器
    产品描述SY8089是一种高效的,直流到直流的降压开关调节器,能够提供高达2A的输出电流。该设备的工作电压范围为从2.6V到5.5V的输入电压范围,并提供从0.6V到VIN的输出电压。在2MHz的固定频率下工作,允许使用小的外部组件,如陶瓷输入和输出帽,以及小的电感器,同时仍然提供低输出波纹。这......
  • 域名劫持污染可以拦截吗?
    在当今数字化的时代,互联网已经成为人们生活、工作和学习不可或缺的一部分。然而,网络世界并非一片净土,域名劫持污染这一威胁如同潜藏在暗处的“幽灵”,时刻困扰着网络的安全与稳定,也引发了人们对于其是否可以被有效拦截的思考。首先我们先认识下什么是域名污染劫持?域名劫持污染,简......
  • 【CSS in Depth 2 精译_091】15.4:让 CSS 高度值过渡到自动高度 + 15.5:自定义属性的过
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第五部分添加动效✔️【第15章过渡】✔️15.1状态间的由此及彼15.2定时函数15.2.1定制贝塞尔曲线15.2.2阶跃15.3非动画属性15.3.1不可添加动画效果的属性15.3.2淡入与淡出15.4过渡到自然......
  • 关于 Sysprep、小鱼儿yr系统封装优化设置辅助工具、全自动系统封装工具 v5.5.3.6、系
    关于Sysprep、小鱼儿yr系统封装优化设置辅助工具、全自动系统封装工具v5.5.3.6、系统封装助手v2.0正式版、EasySysprep5Plus和系统封装首席执行官的对比分析表格,主要从功能、自动化程度、适用场景等角度进行比较。工具名称Sysprep小鱼儿yr系统封装优化设置辅助工具......
  • 会话管理漏洞--会话劫持,会话固定
     会话资源划分--公有资源,私有资源(需要某种验证才可以访问的资源)http协议--无状态,无连接无状态--指的是服务器不保留于客户端交互时的任何状态,每次请求之前都是独立的,目的是减轻服务器的记忆负担无连接--指的是只有当客户端发送请求时才建立连接,当请求完毕的时候直接释放这......