沙箱程序之虚拟机篇

由上而下的描述。html

 

  • libvirt

最顶层是管理虚拟机的入口,linux开源套件 libvirt(官网:www.libvirt.org):java

Introduction

The libvirt project:linux

Recent / forthcoming release changes程序员

事实上我刚开始接触的时候只知道virsh用来管理虚拟机,感受十分奇怪,而virsh其实就是virtual shell,CLI经常使用的有:list,dumpxml,edit,start,shutdown等,该套件还有一套GUI接口,virt-manager,到了图形界面就至关方便了,跟vmware差很少用法。坦白讲已经这个GUI早已大行其道的时代,我很是热衷于图形界面,由于我属于联想型,发散思惟,懒得死记硬背,最好看到图形就知道怎么用,连手册都不用看,马云说“须要看长长说明书的产品就丢掉”,能用超级自动化工具,毫不手工做业,毕竟程序员就是用来发明超级自动化工具的,够懒,才能发明出更好的超级自动化工具。shell

还要补充一点,虚拟机配置经过xml管理,使用dumpxml命令查看,这个配置文件包含了虚拟机模拟器的路径,你能够在这里将其指向不一样的虚拟机,好比x86,arm,mips,powerpc等等。这一点对于之后的安卓沙箱会用帮助。windows

 

  • qemu

 

这一层就到了虚拟机层了,开源项目,可是能够模拟多种cpu,模拟外设,目前我主要修改和编译其中的部分代码来对抗反虚拟机病毒,细节没必要透露,之后还会作一些相似ring -1的事情,之后作到了再写一篇更深刻的文章。网上有大量资料,目前很少介绍了。centos6,对应的虚拟机版本为2.5,最新版本会有不少新库的依赖,好比libc,有不少坑要填,所以使用老旧的2.5,centos7以后,咱们将采用最新版2.12的qemu。这一层所作的事其实和java vm以及.net vm有些相似,还有WebAssemblly。centos

还有一点,采用增量镜像的好处,第一层为操做系统层,第二层为应用软件层(安装office,wps等样本运行环境),第三层为空(目的是便于镜像还原,因为是空层使得这一层文件很是小,当样本运行事后,用这个很小的空层文件覆盖样本运行后的那个增量,便可将沙箱还原为运行样本以前的面貌)。app

  • kvm

hypervisor层,使用了x86 cpu的VT技术,硬件级虚拟化技术,须要开启cpu vt,安装后会在设备目录有一个/dev/kvm设备,运行在内核当中,与之对应的有windows下的hyper-V,还有苹果的什么我忘记了,不重要。这一层能够跟上一层集成在一块儿,也就是说cpu能够由这一层提供,而外设则由上一层提供。工具

 

越往底层写的越少,由于有些没必要写,更底层的还没深刻研究,我是由qemu切入,而后上下延申,下一篇是驱动篇,由驱动程序入手,窥探操做系统的设计。centos7

相关文章
相关标签/搜索