沙箱程序之虚拟机篇

简介:

由上而下的描述。

  • libvirt

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

The libvirt project:

is a toolkit to manage virtualization platforms
is accessible from C, Python, Perl, Java and more
is licensed under open source licenses
supports KVM, QEMU, Xen, Virtuozzo, VMWare ESX, LXC, BHyve and more
targets Linux, FreeBSD, Windows and OS-X
is used by many applications

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切入,然后上下延申,下一篇是驱动篇,由驱动程序入手,窥探操作系统的设计。

目录
相关文章
关于 虚拟机交叉编译目标机程序,使用filezilla的ftp方式传输到板子上没问题,后来同样环境传入应用运行宕机 的解决方法
关于 虚拟机交叉编译目标机程序,使用filezilla的ftp方式传输到板子上没问题,后来同样环境传入应用运行宕机 的解决方法
关于 虚拟机交叉编译目标机程序,使用filezilla的ftp方式传输到板子上没问题,后来同样环境传入应用运行宕机 的解决方法
|
安全 虚拟化
程序人生 - 吓人!半夜,这个程序从虚拟机里跑出来了!
程序人生 - 吓人!半夜,这个程序从虚拟机里跑出来了!
75 0
程序人生 - 吓人!半夜,这个程序从虚拟机里跑出来了!
|
虚拟化
如何判断当前程序是否运行在虚拟机内
最近写程序,碰到要检测程序是否运行在虚拟机内的问题。在网上找了一下,找到下面两个函数,可以检测程序是否运行在virtual machine中,支持VMWARE 和virtual pc检测. 主要的原理,都是利用virtual machine往往支持一些真实PC不支持的指令.
1217 0
|
Web App开发 SQL 数据库
阿里云虚拟主机:安装wordpress、discuz等网站程序时,数据库资料怎么填?
本文介绍阿里云虚拟主机:安装网站程序时,数据库资料怎么填?购买前请先:领取阿里云幸运券,有很多优惠,下文中有领取链接。 购买建议多买几年,年数越多优惠越多。
3806 0
|
2月前
|
虚拟化
vmware克隆虚拟机后没有ip地址的问题
解决vmware克隆虚拟机后没有内网ip的问题
|
3月前
|
SQL 存储 数据挖掘
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例
虚拟机数据恢复环境: 某品牌R710服务器+MD3200存储,上层是ESXI虚拟机和虚拟机文件,虚拟机中存放有SQL Server数据库。 虚拟机故障: 机房非正常断电导致虚拟机无法启动。服务器管理员检查后发现虚拟机配置文件丢失,所幸xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。服务器管理员在尝试恢复虚拟机的过程中,将原虚拟机内的xxx-flat.vmdk删除后新建了一个虚拟机,并分配了精简模式的虚拟机磁盘和快照数据盘,但原虚拟机内的数据并没有恢复。
【虚拟机数据恢复】VMware虚拟机文件被误删除的数据恢复案例

热门文章

最新文章