virtual machine
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
流行的虚拟机软件有VMware(VMWare ACE)、Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出多个计算机。
虚拟机的分类
现在对虚拟机技术有很多种分类方式,我简单了解了其中一种分类方式:
.按照虚拟机系统对上层应用所提供接口的不同,形成了不同层次的虚拟机技术,主要包括硬件抽象层虚拟机、操作系统层虚拟机、API(应用程序编程接口,Application Programming Interface)层虚拟机,以及编程语言层虚拟机等四类。
硬件抽象层的虚拟机 对上层软件(即客户操作系统)而言,硬件抽象层的虚拟机构造了一个完整的计算机硬件系统,这种虚拟机与客户操作系统的接口即为处理器指令。
操作系统层的虚拟机 通过在动态复制操作系统环境,此类虚拟机能够创建多个虚拟运行容器。而对运行在每个容器之上的软件而言,此类虚拟机均提供了一个完整的操作系统运行环境,而它与上层软件的接口即为系统调用接口。
API层的虚拟机 此类虚拟机为上层应用软件提供了特定操作系统运行环境的模拟,但这种模拟并不是对处理器指令的仿真,而是模拟实现该操作系统的各类用户态API。
编程语言层虚拟机 此类虚拟机通过解释或即时编译技术(Just-In-Time,JIT)来运行语言虚拟机指令,从而实现软件的跨平台特性。
VMware Workstation
我使用桌面虚拟计算机软件就是VMware Workstation,它提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。
我在VMware Workstation下安装Linux操作系统(Ubuntu),通过这样一种方式很好的模拟了Linux环境。还有一种方法是装个双系统,它们最大的区别在于内存占有上,如果是双系统的话,你的linux会完全占有你电脑的CPU及内存资源,而虚拟机的只能占有你分配的那部分内存,相比起来虚拟机的linux无论在速度还是处理性能上都会比双系统的差劲,并且有些东西是无法编译的。那为什么我依然还要坚持安虚拟机呢,就是因为虚拟机十分方便,隔离在一个虚拟空间里,可以在里面尽情的作,而且目前遇到的题目都可以在VMware中解决。
VMware 可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就像标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。 使我们可以在同一台PC机上同时运行Windows NT、Linux、Windows 9x、FreeBSD……可以在使用Linux的同时,即时转到Win 9x中运行Word。如果要使用Linux,只要轻轻一点,又回到Linux之中。就如同你有两台计算机在同时工作。实现的工具就是:虚拟计算平台——Vmware。
关于题目
题目描述
1.对 myvm 进行分析,并理解其指令格式,取址方式。了解指令用法。
2.基于对 myvm 的理解写出对应的反汇编器
3.对 hello 程序进程分析,理解 hello 程序所做的所有事情,并将上述整个过程总结为一篇规范美观的研究报告。
预解题
先去下载解题文件,下载完成后发现是个.tgz文件,所谓.tgz文件就是以.tar.gz为扩展名的是一种压缩文件,在linux和osx下常见,linux和osx都可以直接解压使用这种压缩文件。打开虚拟机先去解压以下这个文件
得到myvm、hello两个文件。接下来用objdump工具获取myvm的汇编代码
使用IDA pro 对 myvm 程序的反汇编
计划
关于IDA的使用我还不是很熟悉,接下来回去熟悉它的使用。
继续学习汇编语言。
了解反汇编的一些知识。