CTF-PWN-QEMU-前置知识

news2024/9/23 1:35:24

文章目录

  • QEMU 内存管理(QEMU 如何管理某个特定 VM 的内存)
    • MemoryRegion gpa->hpa
    • FlatView:表示MR 树对应的地址空间
    • FlatRange:存储不同MR对应的地址信息
    • AddressSpace:不同类型的 MemoryRegion树
    • RAMBlock
    • 总体简化图
  • QEMU 设备模拟 (QEMU的模拟IO设备如何与VM交互)
    • QEMU 设备 IO 处理

QEMU 内存管理(QEMU 如何管理某个特定 VM 的内存)

QEMU:能够完成gva-gpa=hva-hpa地址的转换

MemoryRegion gpa->hpa

QEMU通过MemoryRegion管理虚拟机内存,每个MemoryRegion对应虚拟机一部分内存,同时还有相关对应Host的虚拟内存相关信息。不同MemoryRegion通过树状组织连接起来,连接到根MemoryRegion下,不同MemoyRegion树代表不同作用的内存,如系统内存空间(system_memorry)或IO内存空间(system_io)

MemoryRegion可以分为以下三种类型

  • 根级MemoryRegion:通过memory_region_init初始化,只是个管理用的(如system_memory),没有自已对应的部分内存
  • 实体MemoryRegion:通过memory_region_init_ram初始化,有对应的内存,大小为size
  • 别名 MemoryRegion:通过 memory_region_init_alias 初始化,没有自己对应的内存,作为一个实体的别名存在,通过alias成员指向对应的实体,alias_offset代表该别名MemoryRegion所代表内存起始GPA相对于实体 MemoryRegion 所代表内存起始GPA的偏移量

FlatView:表示MR 树对应的地址空间

struct FlatView {
    struct rcu_head rcu;
    unsigned ref;
    FlatRange *ranges;
    unsigned nr;
    unsigned nr_allocated;
    struct AddressSpaceDispatch *dispatch;
    MemoryRegion *root;
};

FlatRange:存储不同MR对应的地址信息

struct FlatRange {
    MemoryRegion *mr;
    hwaddr offset_in_region;
    AddrRange addr;
    uint8_t dirty_log_mask;
    bool romd_mode;
    bool readonly;
    bool nonvolatile;
};

AddressSpace:不同类型的 MemoryRegion树

两种,为address_space_memory 与 address_space_io

/**
 * struct AddressSpace: describes a mapping of addresses to #MemoryRegion objects
 */
struct AddressSpace {
    /* private: */
    struct rcu_head rcu;
    char *name;
    MemoryRegion *root; //是对应树的根

    /* Accessed via RCU.  */
    struct FlatView *current_map; //对对应树的地址空间表示

    int ioeventfd_nb;
    struct MemoryRegionIoeventfd *ioeventfds;
    QTAILQ_HEAD(, MemoryListener) listeners;
    QTAILQ_ENTRY(AddressSpace) address_spaces_link;
};

RAMBlock

MR 对应的 Host 虚拟内存,每个RAMBlock表示单个实体MemoryRegion所占的Host虚拟内存信息,多个RAMBlock构成RAMList
每个RAMBlock都有一个唯一的MemoryRegion对应

总体简化图

大佬勿喷,后续学的更深会完善
在这里插入图片描述

QEMU 设备模拟 (QEMU的模拟IO设备如何与VM交互)

QEMU 在用户空间中独立进行设备模拟,虚拟设备被其他的 VM 通过 VMM 提供的接口进行调用。并且设备的模拟是独立于VMM

QEMU 设备 IO 处理

当VM访问某虚拟设备的物理内存/端口时候,控制权由VM转交到VMM,此时QEMU会根据触发VM-exit的事件类型进行不同的处理,即MMIO还是PMIO。
MMIO:对address_space_memory类的地址空间读写
PMIO: 对address_space_io类的地址空间进行读写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1244720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式之建造者(Builder)模式

目录 1、什么是建造者Builder模式? 2、建造者Builder模式的利与弊 3、建造者Builder模式的应用场景 4、建造者模式中的指导者(Director)有什么作用? 5、建造者Builder模式与其他模式的关系 小结 1、什么是建造者Builder模式…

某60区块链安全之未初始化的存储指针实战一学习记录

区块链安全 文章目录 区块链安全未初始化的存储指针实战一实验目的实验环境实验工具实验原理实验过程 未初始化的存储指针实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 实验环境 Ubuntu18.04操…

飞书智能伙伴之 AI 数智参谋:先进团队,北极星指标也要遥遥领先

11 月 22 日,飞书在 2023 秋季飞书未来无限大会上正式发布了飞书智能伙伴。作为首批生态伙伴,基于 Kyligence 智能一站式指标平台实现的 AI 数智参谋也正式亮相。这是继 11 月 21 日 Kyligence 产品发布会后,Kyligence 在数据驱动决策智能领域…

python之pyqt专栏1-环境搭建

#python pyqt# python:3.11.6 pycharm:PyCharm Community Edition 2023.2.5 pyqt6 python安装 官网下载:Python Releases for Windows | Python.org pycharm社区版安装 官网地址:Download PyCharm: Python IDE for Professional…

CUDA与GPU编程

文章目录 CUDA与GPU编程1. 并行处理与GPU体系架构1.1 并行处理简介1.1.1 串行处理与并行处理的区别1.1.2 并行处理的概念1.1.3 常见的并行处理 1.2 GPU并行处理1.2.1 GPU与CPU并行处理的异同1.2.2 CPU的优化方式1.2.3 GPU的特点 1.3 环境搭建 CUDA与GPU编程 1. 并行处理与GPU体…

思维模型 潘多拉效应

本系列文章 主要是 分享 思维模型 ,涉及各个领域,重在提升认知。越是禁止,越是好奇。 1 潘多拉效应的应用 1.1 潘多拉效应在管理中的应用 通用电气公司曾经推出了一项名为“六西格玛”的管理方法,该方法旨在通过优化业务流程和提…

土地利用数据技术服务

一、背景介绍 土地是人类赖以生存与发展的重要资源和物质保障,在“人口-资源-环境-发展(PRED)”复合系统 中,土地资源处于基础地位。随着现代社会人口的不断增长以及工业化、城市化进程的加速&a…

所有权成果输出(宗地基本信息表、界址标示表、界址签章表、界址点成果表、宗地图、界址说明表、调查审核表)

一、软件界面: 二、软件功能:主要实现批量生成不动产权籍调查表、宗地基本信息表、界址标示表、界址签章表、界址点成果表、宗地图、界址说明表、调查审核表。(本次宗地包含内外环宗地) 三、所有权成果要求(宗地基本信息表、界址标示表、界址签章表…

创作4周年

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言机…

工业一体全国产方案,米尔T113核心板

入门级HMI屏作为嵌入式系统中重要组成部分,大部分都是串口屏;其功能简单、成本低等特点,使用历史悠久、应用广泛,而随着信息技术的快速发展,行业需求不断升级,工程师使用了大量串口屏后,发现串口…

操作系统 day13(RR、优先级调度)

RR(时间片轮转) 响应时间:系统中有10个进程正在并发执行,如果时间片为1秒,则一个进程被响应可能需要等待9秒。也就是说,如果用户在自己进程的时间片外通过键盘发出调试命令,可能需要等待9秒才能…

大厂面试官最爱问的20道Mysql面试题

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

thinkphp6生成PDF自动换行

composer安装 composer require tecnickcom/tcpdf 示例 use TCPDF;public function info($university,$performance,$grade,$major){//获取到当前域名$domain request()->domain();//实例化$pdf new TCPDF(P, mm, A4, true, UTF-8, false);// 设置文档信息$pdf->SetCr…

Redis高可用之主从复制及哨兵模式

一、Redis的主从复制 1.1 Redis主从复制定义 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用; 主从复制实现数据的多级备份,以及读写分离(主服务器负责写,从服务器只能读) 1.2 主从复制流…

多线程的实现方式

点击链接返回标题-> Java线程的学习-CSDN博客 第一种方式,继承Thread类 Thread类是java.lang包下的类,是多线程经常需要使用的类。 ①通过自定义子类去继承Thread类,并重写其中的run()方法。 class myThread extends Thread {//自定义子类…

hive return code 40000 from org.apache.hadoop.hive.ql.exec.MoveTask解决思路

参考学习 https://github.com/apache/hive/blob/2b57dd27ad61e552f93817ac69313066af6562d9/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java#L47 为啥学习error code 开发过程中遇到以下错误,大家觉得应该怎么办?从哪方面入手呢? 1.百…

51单片机利用I/O口高阻状态实现触摸控制LED灯

51单片机利用I/O口高阻状态实现触摸控制LED灯 1.概述 这篇文章介绍使用I/O口的高阻状态实现一个触摸控制LED灯亮灭的实验。该实验通过手触摸P3.7引脚,改变电平信号控制灯的亮灭。 2.实验过程 2.1.实验材料 名称型号数量单片机STC12C20521LED彩灯无1晶振12MHZ1电…

【git】使用ssh

前言 git之前一直使用https,因为很方便随时随地都可以用。最近把代码托管到GitHub,使用https就使用不了。后面听同事说GitHub使用ssh是没问题的,就想着尝试一下。 git ssh配置 设置用户名和邮箱 git config --global use.name username g…

一条Update语句的执行过程是怎样的?

先看第一个问题,这里做个简单描述 ,因为我们着重还是看Update MySQL执行一条Select语句是怎么运行的? 这个问题大家在面试的时候大家都背过类似的题,而且网上也有很多答案,这里分享一个大致流程介绍,关于…

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示

通过ros系统中websocket中发送sensor_msgs::Image数据给web端显示 #include <ros/ros.h> #include <signal.h> #include <sensor_msgs/Image.h> #include <message_filters/subscriber.h> #include <message_filters/synchronizer.h> #include &…