前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >沙箱程序之虚拟机篇

沙箱程序之虚拟机篇

作者头像
战神伽罗
发布2019-07-24 15:29:27
1.1K0
发布2019-07-24 15:29:27
举报

由上而下的描述。

  • libvirt

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

Introduction

The libvirt project:

Recent / forthcoming release changes

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

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

  • qemu

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

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

  • kvm

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

越往底层写的越少,因为有些不必写,更底层的还没深入研究,我是由qemu切入,然后上下延申,下一篇是驱动篇,由驱动程序入手,窥探操作系统的设计。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档