qemu简介分析_第1页
qemu简介分析_第2页
qemu简介分析_第3页
qemu简介分析_第4页
qemu简介分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录 运行环境分类 QEMU简介 QEMU核心部件TCG 可能的捕获机制 两个设计的例子 QEMU源码架构系统安全基本测试环境运行环境一 攻击库的运行环境选择1 沙箱/影子系统: 本地系统中进行操作; (安全) 记录操作记录; 结束就恢复(沙箱是倒沙,影子是重启) 2 虚拟机: VMware, (部分物理) Parallels Desktop, VirtualBox-ose, 3 模拟器: Bochs, Qemu(模拟更多的指令架构和硬件平台)(纯软件) 要求: 开源(增删功能模块防御机制) 隔离(安全保护宿主机)系统安全基本测试环境Qemu Qemu开源,Bochs也开源,但是支持的系统只有

2、X86。 Virtualbox-ose也开源,但是灵活性和开放程度没有 Qemu好。Qemu可以模拟cpu也可以模拟外设。可以随意修改源代码,添加对自己的系统的支持。两篇硕士学位(西安电子科大)论文:基于基于Qemu的恶意程序行为捕获软件研究与的恶意程序行为捕获软件研究与实现实现.2014基于基于Qemu的的进程检测工具的设计与进程检测工具的设计与实现实现.2013QEMU整体架构示意图:QEMU模式选择QEMU 开源模拟器软件 使用可移植的动态二进制翻译器的模拟器软件 实现了多源多目标的仿真 Qemu的运行就是不断地取指、翻译、执行 取指:取得源指令体系结构的指令 翻译:把源指令翻译成目标指

3、令 执行:在本机上执行目标指令 Qemu系统由解释器、翻译器、翻译缓存、控制核心等几部分组成 多种优化技术:基本块、缓存翻译块QEMU指令翻译模块(TCG)QEMU指令翻译模块(TCG)例如一条源指令: jmp f000:e05b gen_opc_buf,存储操作码的缓冲区; gen_opparam_buf,存储参数的缓冲区; gen_code_buf,存储翻译后指令的缓冲区; gen_opc_ptr、gen_opparam_ptr、gen_code_ptr 这三个指针 变量依次指向上述缓冲区。 disas_insn()函数扫描解析这段指令编码,扫描到的第 1 个字节是 0 xEA,可知这是一

4、条 16 位无条件跳转指令。对这条指令的后续处理是从后续字节中得到 offset 和 selector,至此本指令执行所需的操作数已经解析完成。可能的捕获机制 收集程序行为的可能架构:一是:在虚拟机内部进行监控,利用客户机操作系统的接口或是修改客户机操作系统内核,构建监控单元。(缺点:处在底层的恶意程序有可能绕过检测单元)二是:在虚拟机外部,即虚拟机监控VMM(Virtual Machine Monitor),进行监控。(缺点:数据来自于VMM,而不是操作系统层次,存在恶意程序的语义鸿沟)QEMU-捕获机制QEMU开源监控系统位于 qemu 进程内部,它在指令翻译部分插入监控代码。弥补语义鸿沟

5、:进程识别、API 捕获、行为分析等。两个例子QEMU-API监控系统架构QEMU-进程监控系统架构第二个例子模块化设计CPU信息提取内存读写进程监测模块Qemu-源码架构 QEMU的主要功能就是不断提取客户机代码并且转化成主机指定架构的代码。 整个翻译任务分为两个部分:第一个部分是将做目标代码(TB)转化成TCG中间代码,然后再将中间代码转化成主机代码。 Qemu-源码架构/vl.c:最主要的模拟循环,虚拟机机器环境初始化,和CPU的执行。 /target-arch/translate.c :将客户机代码转化成不同架构的TCG操作码。 /tcg/tcg.c:主要的TCG代码。 /tcg/ar

6、ch/tcg-target.c : 将TCG代码转化生成主机代码 /cpu-exec.c:主要寻找下一个TB(翻译代码块),如果没找到就请求得到下一个TB,并且操作生成的代码块。 Qemu-TCG代码分析 函数函数 路径路径 注释注释main_loop(.) /vl.c /some条件的不断判断,条件的不断判断,eg.电源是否断电源是否断电电qemu_main_loop_start(.)/cpus.c /分时运行分时运行CPU核,核,cpu_exec_all()struct CPUState/target-xyz/cpu.h /CPU状态结构体状态结构体cpu_exec(.)/cpu-exec

7、.c /主要的执行循环主要的执行循环,嵌入嵌入fast()和和slow()struct TranslationBlock/exec-all.h /表明表明TBtb_find_fast(.)/cpu-exec.c /命中哈希表命中哈希表,找到找到下一个下一个TBtb_find_slow(.)/cpu-exec.c /快速查找失败快速查找失败,访问物理地址寻找访问物理地址寻找TBtb_gen_code(.)/exec.c /分配一个新的分配一个新的TBcpu_gen_code(.)translate-all.c /初始化真正代码生成初始化真正代码生成disas_insn()/target-arch/translate.c /switc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论