虚拟机技术专题讨论

合集下载

探究虚拟机管理技术与应用

探究虚拟机管理技术与应用

探究虚拟机管理技术与应用1.引入随着计算机科技的发展,虚拟化技术成为了一个热门领域。

而虚拟机作为虚拟化技术的一种代表,对于现代信息化建设和云计算平台的构建有着非常重要的作用。

因此,虚拟机管理技术的研究和应用也受到了越来越多人的关注。

2.什么是虚拟机?虚拟机(Virtual Machine),简称VM,是一种软件仿真技术,可以模拟一台计算机(虚拟机),在虚拟机上创建一个完整的操作系统环境(Guest OS),并在该环境内运行应用程序,从而实现多个虚拟机共享同一物理计算机资源的目的。

虚拟机可以分为完全虚拟化和半虚拟化两种。

在完全虚拟化中,虚拟机操作系统不知道自己在虚拟环境中运行,而在半虚拟化中,虚拟机操作系统显式地知道自己在虚拟环境中运行。

3.虚拟机管理技术虚拟机管理技术是指用于管理虚拟机的各种技术,包括虚拟机的配置、操作、监控、迁移等。

(1)虚拟机配置虚拟机配置是指对虚拟机的各种参数进行设置,包括虚拟机的硬件配置、网络配置、存储配置等。

虚拟机配置的好坏直接影响到虚拟机的性能和稳定性。

(2)虚拟机操作虚拟机操作是指对虚拟机进行各种操作,包括虚拟机的启动、停止、重启等。

虚拟机操作需要依赖虚拟机管理系统来实现。

(3)虚拟机监控虚拟机监控是指对虚拟机的运行状态进行监视和维护,包括对虚拟机各项指标的检测、故障预警等。

虚拟机监控对于虚拟机的性能调优和故障排除非常重要。

(4)虚拟机迁移虚拟机迁移是指将虚拟机从一个物理计算机迁移到另一个物理计算机,实现虚拟机的高可用和负载均衡。

虚拟机迁移需要依赖虚拟化管理软件或虚拟机管理软件来实现。

4.虚拟机管理工具虚拟机管理工具是指用于管理虚拟机的软件工具,包括虚拟化管理软件和虚拟机管理软件两种。

(1)虚拟化管理软件虚拟化管理软件是一种对物理主机和虚拟机进行管理和监控的软件,包括VMware、Hyper-V等。

虚拟化管理软件提供全局视图和控制,可以对计算、存储和网络进行整合管理,提高了虚拟化环境中的可管理性和可维护性。

虚拟机技术的应用与优化探究

虚拟机技术的应用与优化探究

虚拟机技术的应用与优化探究虚拟机技术,指的是运行在物理硬件上的虚拟机软件,通过虚拟化技术,将一台物理计算机划分为多台虚拟计算机。

在这些虚拟计算机上运行的操作系统和应用程序可以看做是在一台独立的计算机上运行,它们之间相对隔离,互不影响,代码运行安全可靠。

虚拟机技术在云计算、大数据等领域得到了广泛应用。

虚拟机技术的优势在于,可大幅提高硬件资源利用率,节省企业的 IT 投资。

例如,许多企业的服务器内存、CPU 都没有得到充分利用,虚拟化后,各个虚拟机的计算量可以平均分配,更好地利用硬件资源。

然而,虚拟机技术也存在问题。

首先,虚拟机运行的效率不如裸机,会有一个性能损失。

其次,虚拟机的大小和数量过多,会占用大量存储空间和内存,同时增加了管理和维护难度。

所以,如何优化虚拟机技术的性能和资源利用率,是当前亟待解决的问题。

对于虚拟机的性能损失问题,可以从多方面入手进行优化。

首先,选择合适的虚拟机软件和硬件配置,以确保虚拟机的性能尽可能接近裸机。

其次,在虚拟机内部对系统的各项参数进行优化,例如调整内存、磁盘和网络等方面的配置,以提高系统的整体性能。

此外,还可以使用虚拟机工具监控虚拟机的性能表现,及时发现并解决性能瓶颈。

另外,资源利用率方面,可以从虚拟机数量、硬件利用率、虚拟磁盘和网络等方面入手。

首先,可以通过虚拟机的合理规划和分配,使得虚拟机数量和分布满足实际需要。

其次,可以通过计算机集群、负载均衡等方式,提高多个虚拟机的硬件利用效率。

最后,针对虚拟磁盘和网络瓶颈,可以使用虚拟机技术中的高级功能,例如共享存储、网络流量控制等,来优化虚拟机的资源利用率。

综上所述,虚拟机技术的应用与优化探究,是一个复杂而又有价值的问题。

通过综合运用虚拟机性能优化和资源利用率提升的技术手段,可以发挥其在企业 IT 技术优化和大型云计算系统构建中的重要作用,提升企业竞争力和增强 IT 基础设施安全性和稳定性。

虚拟机技术

虚拟机技术

虚拟机软件认识篇虚拟机(VM)是支持多操作系统并行运行在单个物理服务器上的一种系统,能够提供更加有效的底层硬件使用。

在虚拟机中,中央处理器芯片从系统其它部分划分出一段存储区域,操作系统和应用程序运行在“保护模式”环境下。

1.比较通俗的回答(适合没有电脑基础的朋友)虚拟机,顾名思义就是虚拟出来的电脑,这个虚拟出来的电脑和真实的电脑几乎完全一样,所不同的是他的硬盘是在一个文件中虚拟出来的,所以你可以随意修改虚拟机的设置,而不用担心对自己的电脑造成损失,因此可以用来做试验什么的,呵呵,差不多就是这样了,不知道我说的能明白不^_^,简单说就是一句话,虚拟出来的电脑,你干什么都行。

现在说一下虚拟机的软件,主要是两中,Virtual PC和VMware。

软件的选择也是有门道滴,嘿嘿,简单来说,VPC的设置很简单,一路next就行了,VM设置相对麻烦一些,不过也不是麻烦很多,但是VM拥有更好的性能,可以说和真实的电脑性能完全一样,还可以用桥接的方式和现在的电脑互连^_^,可以研究的东西就更多了,呵呵2.比较专业的回答(适合有一点电脑基础的朋友)在一台电脑上将硬盘和内存的一部分拿出来虚拟出若干台机器,每台机器可以运行单独的操作系统而互不干扰,这些“新”机器各自拥有自己独立的CMOS、硬盘和操作系统,你可以像使用普通机器一样对它们进行分区、格式化、安装系统和应用软件等操作,还可以将这几个操作系统联成一个网络。

在虚拟系统崩溃之后可直接删除不影响本机系统,同样本机系统崩溃后也不影响虚拟系统,可以下次重装后再加入以前做的虚拟系统。

同时它也是唯一的能在Windows和Linux主机平台上运行的虚拟计算机软件。

虚拟机软件不需要重开机,就能在同一台电脑使用好几个OS,不但方便,而且安全。

虚拟机在学习技术方面能够发挥很大的作用。

虚拟机(virtual machine)虚拟机(VM)是支持多操作系统并行运行在单个物理服务器上的一种系统,能够提供更加有效的底层硬件使用。

虚拟机性能优化技巧(一)

虚拟机性能优化技巧(一)

【老会计经验】锅炉维修费用的税务处理近日,浙江雪峰碳酸钙有限公司向衢州市国税局咨询,企业今年在原来基础上,对锅炉进行了维修,并取得了施工单位出具了的项目建筑安装工程款发票。

他们问这笔费用是列入修理费用,还是列固定资产?会计处理和税务处理分别是如何规定的?税务人员告诉他们,该公司对原有锅炉进行维护发生的支出,在会计处理上,按固定资产后续支出进行核算。

在会计处理中,对于固定资产发生的下列各项后续支出,通常的处理方法如下:1.固定资产修理费用,应当直接计入当期费用。

2.固定资产改良支出,应当计入固定资产账面价值,其增计后的金额不应超过该固定资产的可收回金额。

3.如果不能区分是固定资产修理还是固定资产改良,或固定资产修理和固定资产改良结合在一起,则企业应按上述原则进行判断,其发生的后续支出,分别计入固定资产价值或计入当期费用。

4.固定资产装修费用,符合上述原则可予资本化的,应当在固定资产科目下单设固定资产装修明细科目核算,并在两次装修期间与固定资产尚可使用年限两者中较短的期间内,采用合理的方法单独计提折旧。

如果在下次装修时,该项固定资产相关的固定资产装修明细科目仍有余额,应将该余额一次全部计入当期营业外支出。

在税务处理上,按国家税务总局关于印发《企业所得税税前扣除办法》(国税发[2000]84号)第三十一条规定:纳税人的固定资产修理支出可在发生当期直接扣除。

纳税人的固定资产改良支出,如有关固定资产尚未提足折旧,可增加固定资产价值;如有关固定资产已提足折旧,可作为递延费用,在不短于5年的期间内平均摊销。

符合下列条件之一的固定资产修理,应视为固定资产改良支出:(一)发生的修理支出达到固定资产原值20%以上;(二)经过修理后有关资产的经济使用寿命延长两年以上;(三)经过修理后的固定资产被用于新的或不同的用途。

财务会计的实际工作经验和能力是日积月累、逐步提高的,绝不可能一朝一夕的事情;财务会计是一种各个领域融会贯通的工作,所以建议要全面地补充各个方面的知识,而不仅局限于本职工作;坚持一天学一点,然后在学习的过程中找到自己的缺陷,你可以针对自己的习惯来制定自己的学习方案,只有你自己才能知道自己的不足。

虚拟机虚拟化技术的发展与趋势(二)

虚拟机虚拟化技术的发展与趋势(二)

虚拟机虚拟化技术的发展与趋势引言虚拟化技术以其高效、灵活、可扩展等特性,正成为当今信息技术领域的热门话题。

其中,虚拟机虚拟化技术作为最具代表性与应用广泛的技术之一,不断发展并呈现出一系列新的趋势。

本文将对虚拟机虚拟化技术的发展历程及未来趋势进行探讨。

一、虚拟机虚拟化技术的发展历程虚拟机虚拟化技术的起源可追溯到上个世纪60年代。

当时,IBM 推出了VM/370操作系统,将一台物理计算机划分为多个逻辑计算机,实现了不同操作系统的隔离运行。

随着硬件性能的提升和虚拟化技术的逐步发展,虚拟机虚拟化技术的应用范围也逐渐扩大。

1999年,VMware发布了第一款商用虚拟机软件VMware Workstation,使得虚拟机虚拟化技术进入了商用化阶段。

二、虚拟机虚拟化技术的发展趋势1. 性能优化虚拟机虚拟化技术的性能优化一直是研究的重点。

虚拟机监控程序(VMM)对底层硬件资源的虚拟化要求更高效。

近年来,一些创新性的优化方法被应用于虚拟机虚拟化技术中,如硬件辅助虚拟化、二进制翻译等。

这些方法不仅提升了虚拟机虚拟化技术的性能,还降低了虚拟机与宿主机之间的开销。

2. 容器化与虚拟机的融合容器化技术的迅猛发展为虚拟机虚拟化技术带来了新的挑战与机遇。

容器技术相对于传统的虚拟机化技术,具有更轻量、快速启动、高效利用资源等优势。

因此,将容器化与虚拟机虚拟化技术相结合,可以实现更好的资源利用和性能优化。

未来,容器与虚拟机的融合将成为虚拟化技术的一个重要发展趋势。

3. 混合云和多云环境随着云计算的快速发展,虚拟化技术在云计算领域中发挥着重要作用。

多个云服务提供商之间的竞争和合作,推动了虚拟机虚拟化技术在混合云和多云环境中的应用。

虚拟机虚拟化技术可以实现资源的灵活分配和管理,使得用户可以在不同云服务提供商之间无缝迁移和运行虚拟机实例。

4. 安全保障虚拟机虚拟化技术在隔离和保护虚拟机环境方面具有一定优势。

未来,虚拟机虚拟化技术将进一步加强对虚拟机环境的安全保障。

虚拟机性能优化技巧(十)

虚拟机性能优化技巧(十)

虚拟机性能优化技巧在现代科技日益发展的时代,虚拟机已经成为了很多企业和个人的不可或缺的工具。

无论是开发应用程序、运行服务器还是进行数据分析,虚拟机都扮演着重要的角色。

然而,由于虚拟机在运行过程中需要模拟硬件环境,势必会影响其性能。

因此,虚拟机性能的优化是非常重要的。

本文将探讨一些虚拟机性能优化的技巧,帮助您提高虚拟机的效率和性能。

一、资源分配与调整虚拟机的性能优化首先需要关注资源的分配与调整。

首先,合理分配虚拟机的内存资源。

过高的内存分配会导致性能瓶颈,过低的内存分配则会降低系统的稳定性。

根据实际需求,合理调整虚拟机的内存分配,使其既能满足应用程序的需求,又不会过度消耗资源。

其次,关注虚拟机的CPU资源。

CPU是虚拟机中最关键的资源之一,合理分配和管理CPU资源对于提高虚拟机性能至关重要。

可以通过将虚拟机绑定到物理CPU,或者设置CPU亲和性来提高虚拟机的性能。

此外,检查虚拟机中的进程和应用程序的CPU使用情况,及时调整资源分配,优化虚拟机的性能。

二、磁盘和存储优化磁盘和存储是虚拟机性能优化的另一重要方面。

首先,选择合适的磁盘类型。

虚拟机通常支持多种磁盘类型,如IDE、SATA、SCSI等。

在选择磁盘类型时,需要考虑传输速度、容量和性能需求等因素,选择最适合的磁盘类型,提高虚拟机的性能。

同时,优化虚拟机的磁盘IO操作。

可以通过使用RAID技术提高磁盘的性能和冗余性,减少磁盘IO的延迟。

此外,使用SSD作为虚拟机的存储介质也能显著提高虚拟机的性能。

对于频繁进行IO操作的虚拟机,使用SSD可以大幅减少IO延迟,提高系统的响应速度。

三、网络性能优化网络性能优化是虚拟机性能优化的另一个重要方面。

首先,合理设置虚拟机的网络带宽限制。

根据虚拟机所在网络的实际带宽情况,设置虚拟机的网络带宽限制,避免网络拥塞和性能下降。

其次,合理配置虚拟机的网络适配器。

虚拟机的网络适配器可设置为桥接模式、NAT模式或者仅主机模式。

虚拟机性能优化技巧

虚拟机性能优化技巧

虚拟机性能优化技巧近年来,随着云计算与虚拟化技术的不断发展,越来越多的企业选择使用虚拟机来运行和管理他们的应用程序。

然而,正因为虚拟机资源共享,可能会导致性能问题。

在这篇文章中,我们将探讨如何优化虚拟机的性能,以提高应用程序的运行效果。

1.资源分配和调整首先,要充分利用虚拟机管理工具提供的资源管理机制。

通过设置适当的CPU和内存分配,可以避免资源的浪费和冲突。

例如,在多个虚拟机之间进行合理的CPU分配,可以避免某个虚拟机占用过多CPU 导致其他虚拟机性能下降的情况。

此外,及时调整虚拟机的资源配比也是十分重要的,根据工作负载的变化来灵活分配虚拟机的资源,可以提高整体性能。

2.存储性能优化其次,存储性能的优化对虚拟机而言也是至关重要的。

一方面,使用高性能的存储设备可以加速数据的访问和写入速度。

例如,使用固态硬盘(SSD)替换传统机械硬盘(HDD)可以极大地提高虚拟机的存储性能。

另一方面,优化虚拟磁盘的使用方式也是提升性能的关键。

可以将频繁访问的数据放在虚拟磁盘的高速缓存中,以减少磁盘的I/O 操作。

同时,定期清理虚拟磁盘中的无效数据,也可以提高性能。

3.网络性能调优虚拟机的网络性能也会对应用程序的运行效果产生影响。

为了优化网络性能,可以采取以下几个措施。

首先,配置虚拟网络适配器的带宽限制,以避免某个虚拟机占用过多的网络带宽,而导致其他虚拟机无法正常通信。

其次,使用虚拟交换机进行网络隔离,可以有效减少网络冲突和噪音。

另外,还可以使用网络流量优化工具,对虚拟机的网络流量进行分析和控制,以提高网络传输效率。

4.虚拟机监控和调试除了以上几点优化技巧外,虚拟机的监控和调试也是不可忽视的。

通过监控虚拟机的性能指标,可以及时发现潜在的性能问题,并及时采取措施进行优化。

例如,监控CPU使用率、内存利用率和磁盘I/O速度等指标,可以发现是否有资源使用不合理的情况。

此外,通过虚拟机监控工具的日志分析,还可以进一步探查虚拟机性能下降的原因,并进行相应的调试。

用户谈关于VMware虚拟化技术的几点了解

用户谈关于VMware虚拟化技术的几点了解

用户谈关于VMware虚拟化技术的几点了解作为一个热爱计算机硬件的工作者,不一定要技术上力挫群芳,重要的是有没有一个重在参与的态度。

总想自己写一点自己的理解性的文字,但是目前关于一些服务器硬件方面的文章已经在网络上泛滥了,我抽了点时间,把自己这次在公司的Tech Summit上获得的收获,整理出了一点文字,下面的文字是我自己培训以后整理的,对虚拟化VMware的理解还称不上原创,很多知识和信息是与培训的老师一起沟通以后,打开了内心的心结所获得的。

能够把了解的东西如果能够与大家一起分享也是一件很愉快的事情。

首先VMware是一门很新兴的技术,我对虚拟化的了解还停留在门槛阶段,所以下面的文字里难免会有很多认识不足和技术上的错漏,还请大家看过以后帮忙指正与修改。

或者把我看做一个完全门外汉的热心参与。

通过误区的清晰化去了解技术一直是我学习的方式。

在下面这个问题了解清楚之前,我对VMware甚至提出了一个想法,如果在一台4路的服务器上模拟出16路的虚拟运行环境,而只购买4颗CPU的Licence岂不是很赚了,这个问题在ORACLE的培训课程上讲师告诉过我,无论虚拟机如何设置,ORACLE的Licence出售始终是按照物理CPU的内核数量来计算的。

了解虚拟化软件VMware,走出误区,VMware不能够把一个双路的服务器虚拟化表现为16路的服务器,在接触这个软件之前,我甚至认为资源是无限虚拟化的,实际上呢,当一台服务器被虚拟化了以后,它的资源是通过管理软件来分享给虚拟机的,这份被虚拟化集中管理的硬件资源叫做资源池Resource pool,每个虚拟机也就是虚拟的服务器通过虚拟中央管理软件---Virtual Central management 来对资源池里的处理器以及内存资源进行分配。

比如虚拟机A用来安装Linux获得了30%的绝对CPU资源,20%的共享CPU资源,这里20%的资源与另外的虚拟机是对等机会的,谁先申请谁先获得。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

加密历史回顾

在古代,人和人之间的信任并不是唯一要关心的问题,身份验证也很重要。如果只有少数人能读会写,那么签名或许足以证明一个人的身份。但随着掌握读写知识的人越来越多,印章逐渐成为“签署人”一种独特的记号。利用这种记号,便可证明信件、文档和法令签署人的身份确实无误。但随着技术的发展,人们可轻松仿制出各式各样的印章,所以它也失却了原先的“独特”性。事实上,伪造印章是件再容易不过的事情。

加密技术的出现最早在军队的通讯上。相传当年凯撒大帝行军打仗时为了保证自己的命令不被敌军知道,使用了一种特殊的方法进行通信,以确保信息传递的安全。这种密码便是著名的“凯撒密码(The Caesar Cipher)。他的原理很简单,说到底就是字母于字母之间的替换。

自凯撒大帝的年代开始,一直到当代计算机网络,通信技术在稳步地发展着,同时,保障这些通信的安全也逐渐成为一项重要课题。

软件保护历史回顾:(注:我并不是一路走来的人,可能会有错)

10-20年前,那时懂计算机语言的人极少,懂得破解程序的人就更少了。后来IT行业经过几十年的迅猛发展,从DOS时代走向WINDOWS时代,程序理论走向软件工程理论,软件加密解密技术也逐渐趋于成熟,这几年加密解密技术无论是软件还是硬件都一直像矛与盾一样对抗着。

早期的加密要算是ASPack和UPX吧,它们是我最早见过的压缩壳,那时我完全不明白它是如何完成这件事,只觉得很神奇,或者说它们不是为了加密,而单纯是为了压缩吧,这种壳很好脱,简简单单的单步几下就能看到原来的内容了。

随着技术的逐渐发展,战场逐渐转向了对PE文件的修改,如IAT加密,不过还原起来还是很简单。

随着时间的推移,一系列的新技术新思想都逐渐出炉,软件保护由PE文件压缩走向着重对PE文件的保护,一系列的anti出现了,不过道高一尺,魔高一丈,这些都被Cracker找出来并饶过了它的anti又一次看到了软件的真面目。

以前的壳都是对PE文件加密,而不会对代码做任何改动,后来又出现了一项新技术:stolen code,修复这种壳开始有点费时了。

保护技术的新方向:

近年来,软件保护技术又出现了一个新的进步,那就是VM和代码混淆。通过对代码的变形来达到保护软件的目的,想修复被这种保护壳保护的软件,用现有的解密理论是极其痛苦的。

这次就单独讲讲VM的保护技术。 VM保护技术 1.VM技术介绍

我发现论坛上每当谈到虚拟机技术时,鲜有几人参与讨论,因为虚拟机技术还没有普及到大家的心中。VM 其实就是Virtual Machine(虚拟机)的缩写,这里说的VM并不是像VMWare那样的虚拟机,而是将一系列的指令解释成bytecode(字节码)放在一个解释引擎中执行。

2.目前现状的VM应用 VM技术最早的应用我想应该是VB(PCode)吧(瞎猜的),时至今日才被人们广泛用于安全技术中。 如今已经将虚拟机应用到商业中的保护壳现有三款:Vmprotect,themida和 execrypt, Themida是一款综合型强壳,资源加密、代码变形和虚拟机技术用得是面面俱到。 Execrypt 比Themida逊色一点,不过我没研究过。 Vmprotect是一款专门对代码加VM的加壳软件,其保护强度是3款当中最强的,最早由2005年问世起,至今尚无人公开宣称能还原其原汇编代码,可见其强度,所以VMP已逐渐被人们用来保护其产品,使Cracker们对于这个看起来毛茸茸的刺猬毫无办法。

3.VM的一些原理 一个虚拟机引擎由编译器、解释器和VPU Context(虚拟CPU环境)组成,再配上一个或多个指令系统。 编译器:将一条条X86指令解释成自己的指令系统。 解释器:解释器附加在被加壳的软件中,用来解释这些自定义的指令。 指令系统:一套或多套自己定义的指令系统,用来虚拟执行这些bytecode。

在设计VM时提几个建议: 1:设计一个好的、简洁的指令系统是很有必要的,写出越少却能执行最全的指令,就说明这些指令复用性越高。 2:在分析X86指令时最好为它们分类,注意流程指令、不可模仿指令的处理。 3:解释器的代码设计得越少越好,换来的速度可以变形一下。

现在讲讲虚拟机是如何运作的,首先加壳程序先把已知的X86指令解释成了字节码,放在PE文件中,然后将原处代码删掉, 改成类似的代码进入虚拟机执行循环。 push bytecode jmp VstartVM

VstartVM是进入虚拟机的函数,它的代码大概类似这样的

代码:

// 进入虚拟机函数,我的最初版本是写死在成种VC环境下的,不过这样处理起来很麻烦。

void _declspec(naked) VStartVM()

{

_asm

{

// 将寄存器压入堆栈,由伪指令取出存放到VMReg中

//可以考虑为压栈时加入一些随机性

push eax

push ebx

push ecx

push edx

push esi

push edi

push ebp

pushfd

mov esi,[esp+0x20]

mov ebp,esp

sub esp,0x200

mov edi,esp

sub esp,0x40

Next:

movzx eax,byte ptr [esi]

lea esi,[esi+1]

jmp dword ptr [eax*4+JUMPADDR] ;跳到Handler执行处,由加壳引擎填充

VM_END ;VM结束标记

} }

然后每读一个byte跳到目标处模拟执行代码。 JUMPADDR就是一张函数表(让我想到了VTBL),每次从内存里读出一个command code(其实就是偏移),然后转向那个过程,如vEnter的代码:

代码:

// enter和执行下列代码用途相同

//push ebp

//mov ebp,esp

//sub esp,(L - 1) * 4 ; L > 0才有这步操作,用来存储嵌套的L - 1个子过程的栈框架指针(注意是指针)

//push ebp ; 当前过程的栈框架指针 //sub esp,N

mov edx,[edi+Ebp] sub ebp,4 mov dword ptr [ebp],edx mov edx,ebp mov [edi+Esp],edx mov edx,ebp lea ecx,[ecx*4];ecx是从内存读出的opcode sub edx,ecx sub edx,4 test ecx,ecx cmovne ebp,edx mov edx,[edi+Ebp] sub ebp,4 mov dword ptr [ebp],edx sub ebp,eax //。。一些修正堆栈的工作 jmp next

以上代码就是模拟一个enter指令的代码,我不会汇编,就只能写成这样了。

现在再来看看它们的执行过程: 1.首先进入虚拟机,压入寄存器,然后设计一些伪指令来将寄存器保存到虚拟机环境中去。 2.一切工作就绪,真实寄存器存放的值是什么已经不重要了,因为我们将它存放到了虚拟环境中去了,自己可以随便使用而不用怕影响到原来的代码。 3.这时从那句jmp table看起,从[esi]得到一个偏移,它指向的就是vEnter的地址,于是它来到了vEnter处 4.vEnter又从内存中得到opcode,模拟出这句代码,并存放到堆栈。 5.注意有时要修正虚拟堆栈寄存器的值,否则会挂得很惨。

6.Jmp 到 next,这时转向第2步。

其他指令如同vEnter一样。。。发挥你的想像力了。

2-6就是一个虚拟机的执行过程,如果你曾经调试过VM,是否会对jmp [table+x]似曾相识呢?

一个简单的VM引擎就是这个样子,不过一个专业化、商业化的引擎可不仅是这个样子,还要注重很多东西,比如多线程、流程化指令,虚拟-现实之间的转换,支持SEH异常(包括VB、VC的异常)。

看到这里,你可以发现,虚拟机就是一层复杂的壳子,把原来的代码藏得毫无踪影,如果你想还原出原来的代码(基于更高级的理论来说,暂时已经不可能了),那么你需要先复习一下IA64,然后仔细研究VM执行体,逆向出Table中用到的函数,得出它正在执行哪一条语句的哪一“部分”。。。除非你要研究的程序达到了一定的价值,不然我想等你弄清楚这个程序如何执行的时候,意义已经不大了。

4.VM的一些资料(感谢笨笨雄的整理)

游戏维护上不去,介绍一下虚拟机技术。

http://bbs.pediy.com/showthread.php?threadid=20792

【原创】Asprotect 中的 X86 的VM分析 http://bbs.pediy.com/showthread.php?threadid=36245 Asprotect 中的 X86 虚拟机代码分析【原创】 http://bbs.pediy.com/showthread.php?threadid=34135

ExeCryptor v2.X.X虚拟机不完全补完(处女帖) http://bbs.pediy.com/showthread.php?threadid=29537 Themida的VM分析--变形代码清理 http://bbs.pediy.com/showthread.php?threadid=34555 Themida虚拟机简单介绍 http://www.pediy.com/bbshtml/bbs8/pediy8-598.htm Themida v1.8.0.0 Demo虚拟机分析 http://bbs.pediy.com/showthread.php?threadid=36453 寂寞轰炸:再次小窥 VMProtect 虚拟机

相关文档
最新文档