设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 7814|回复: 18
收起左侧

求助:关于VMware 系统日期问题。

[复制链接]
发表于 2014-1-23 13:46:45 | 显示全部楼层 |阅读模式
本人的vmware Workstation虚拟机内装windows XP PRO 和工控软件,平时作为学习之用。
无奈软件本身有时间限制,到07年12月就失效。所以开虚拟机前,必须将系统时间修改为
07年12月之前,才能进虚拟机的操作系统运行该软件。否则程序就会拒接执行。
所以特来此求各位高人指点一下,如何能让虚拟机不加载主机的日期,而让其自带的系统日期相对固定?
至于在虚拟机内用其它方法加载修改日期的程序的尝试,我试过N多,都以失败而告终,
个人对VMware Workstation又不是很熟,所以特来请教,忘不吝赐教,谢谢。
本人使用的是 VMware Workstation 6.02 B 59824版本。
 楼主| 发表于 2014-1-23 13:47:43 | 显示全部楼层
没人来指教一下么
沙发 2014-1-23 13:47:43 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-23 13:48:16 | 显示全部楼层
你可以选择做快照的方法,虚拟机--vm-snapshot--take snapshot
当你把软件装好后,就做个系统快照,快过期的时候就备份好自己的数据,然后还原到做快照的时候。
板凳 2014-1-23 13:48:16 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-23 13:49:09 | 显示全部楼层
最好是将系统默认打开的同步internet时间关闭。
地板 2014-1-23 13:49:09 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 13:49:59 | 显示全部楼层
系统快照的话,效率太低了,那还不如我先该宿机的时间再开虚拟机方便。
另外同步internet时间早就关闭了,包括VMware TOOLS里的时间同步选项,结果是无效。
5# 2014-1-23 13:49:59 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-23 13:50:56 | 显示全部楼层
1.如果是每次虚拟机用的是“Power off”->“Power on”的话,只要在虚拟机系统的启动程序部分加入启动修改时间的命令即可。例如放入“程序->启动”。
2.如果是“Suspend”->“Resume”的话,在虚拟机内VMwareTools的Scripts中指定脚本文件,默认是C:\Program Files\VMware\VMware Tools\resume-vm-default.bat,你可以在它最后添加类似一句date 2007-7-1就可以了
6# 2014-1-23 13:50:56 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 13:51:46 | 显示全部楼层
这两种种方法行不通。早已尝试过了。
我用的软件会在启动时加载加密狗驱动程序,在此时应该就已做了日期比较,所以除非你加载程序的启动等级高于加密狗的驱动,否则用进入系统在通过第三方软件修改系统的方法是徒劳的。
不管怎么样,感谢帮助。
7# 2014-1-23 13:51:46 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-1-23 13:52:40 | 显示全部楼层
这样的话就要用杀手锏了。^_^
在服务中找到VMware Tools Service,然后设置为“禁用”,然后随便设置系统时间吧,reboot,suspend,随便怎么弄时间都不会变回去了,虚拟机时间永远不会和主机同步了。当然,如果想恢复的话,再把那个服务设为“自动”就可以了。爽否?
注:禁用服务后,右下角的“VMware Tools”会变成“服务未启动”图标,可能会影响某些主客机互动的功能,但我用下来还没发现有什么区别,拖文件,剪贴板等都没问题,驱动方面更没问题了,或许有其它问题,就有待LZ去发现了。
8# 2014-1-23 13:52:40 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 13:53:32 | 显示全部楼层
呵呵,其实你还是没有理解我的意思。
当虚拟机(也就是宿机)所带的系统启动时,按照启动顺序,首先加载的是其系统自带的驱动程序,包括加密狗的驱动,然后再是其它程序。所以除非你能将修改时间的程序做成驱动,并且在加载加密狗驱动之前加载,这样才会有效果。至于VMware Tools Service是属于进入系统后,再执行的程序,所以它对这种加密狗驱动判断时间是无效的。
按照我的判断,要对付这种问题,只能从虚拟机的配置文件出发,彻底屏蔽虚拟机系统读取主机时间才有可能解决问题。
9# 2014-1-23 13:53:32 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-1-7 02:08:01 | 显示全部楼层
并不是用Vmware tools来修改时间呀,只是不让他自作聪明同步时间,破坏我们的计划^_^。
用个最简单的试验,你可以在虚拟机BIOS中修改时间,保存,然后重启虚拟机再马上进入BIOS,发现了没,时间根本没有自动同步!其实是这样的,Vmware把BIOS信息储存在.nvram文件中了,储存的是一个相对主机的时间偏移值,你如果此时修改主机的时间,虚拟机的时间会自动调整,不管怎样,都是相对主机一个确定的偏移值。但VMware Tools就太自作聪明,总是同步成相同时间,所以我们要禁用他。
既然BIOS的时间都确认被改了,引导过程还会有问题吗?LZ应该先亲自尝试一下再说不行。
10# 2008-1-7 02:08:01 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-7 22:55:57 | 显示全部楼层
呵呵,我做了一下实验,结果是无效。
现在的主机日期是2008年7月。我开虚拟机,进入虚拟机的BIOS里,将时间改为
2007年的7月。然后退出,重启,进入虚拟机内安装的虚拟系统(Vmware tools早
已禁用),结果和我预测一样,我的工控软件依然判断时间过期……
对于Vmware tools我想说,他只是对于虚拟机系统来说的第三方程序,它的启动
等级是属于很低的,只有在执行完虚拟机系统的驱动后必要程序加载后,Vmware
tools才会启动。所以通过禁止Vmware tools的功能来达到绕过主机的系统时间是
不可能的,因为我的工控软件的判断程序启动等级明显高于Vmware tools。在
Vmware tools发生作用前,我用的软件的加密驱动已经在寄存器某处留下记号了
,即使以后你再怎么改系统时间,都是无效的。
我刚才做的实验也证明了我的观点。
对于Vmware tools的时间同步功能,我觉得它的作用很简单,同步时,它就会在
启动后和主机系统时间做对比,如果不同步,那它就让他同步。如果关闭了,它
就会将上次关闭系统的时间记录在某个文件内,然后虚拟机会自动将此文件内的
时间记录通过某种方式更改宿机的系统时间。
但是,这并不妨碍虚拟机在后台读取主机时间的参数……
所以我想需要的是一个配置文件的参数开关来彻底关闭读取主机时间的功能。.
还有一种办法就是解析加密程序的算法,这个我想我这辈子是没指望了……
难得码那么多字,不知道楼上兄弟有没有看懂。虽然问题没有解决,但我还是很感谢楼上兄弟的指教,希望有机会继续切磋。
11# 2008-2-7 22:55:57 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-3-7 02:21:55 | 显示全部楼层
不好意思,我先确认一件事,我用的是VMware Wortstation 6.0.4,你呢?
另外,我所谓的“简单的试验”,是让你直接进入BIOS改时间,改完日期后也是直接进入BIOS,只要BIOS时间没同步,就是第一步OK了。第二步才是进入XP,看时间是不是与BIOS一样,第三步是看驱动是不是通过时间检测。到底哪一步开始出了问题,请告诉我。
我从你后面话判断,你的宿机时间已经改成功了,那么为什么那个驱动依旧检测出了正确的日期,可能是以下几种情况:
1、驱动利用像Tools一样的方法,通过VM的API从宿机访问主机,能做到这样我无语。
2、通过访问网络获取时间,你网络是不是联通了?如果是的话,请禁用之,或者最好把网卡索性删掉。任何的网络访问都可能破外我们的计划。
3、记忆了时间,驱动把最后一次时间记忆住了,一旦检查出日期被改动(时间倒退了),它就会报过期,如果你想让时间倒退,你必须重新安装驱动甚至重新安装XP系统。
除了上面3种情况,我暂时也想不出别的可能性了。
本来以为挺容易解决的事,没料到还真有点意思。很多程序有时间限制,如果放到虚拟机中运行确实是个好方法。
如果你依然失败的话,能不能把这个驱动发给我,我很感兴趣。
我也很高兴有机会同flyspark一起探讨问题。

12# 2008-3-7 02:21:55 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 20:13:40 | 显示全部楼层
嗯,LET'S GO ON。
第一步:我进入虚拟机的BIOS后,修改完日期,然后关闭虚拟系统和虚拟机。重新运行虚拟程序,再开虚拟系统(这样做应该更彻底了),再进虚拟机的BIOS确认时间没有同步。
第二步:进入虚拟机安装的XP系统后,确认此时的时间日期和BIOS内的设置是一样的。
第三步:运行程序,在相关选项发现,程序已经处于过期状态。
对你猜测的第一种猜想:我也是这么认为的,所以我需要的是VMware的某些隐藏参数或许才能制止这样API读取。
第二种猜测:我用的工控软件是基于网络的,但它属于封闭式网络系统,它对自己机器上的网卡都有分配不同的IP地址。而我是用ADSL+路由上网的,主机的网卡要设置路由子网才能上网,所以虚拟机内的网卡是不可能访问网络的。至少是外网是不可能的,除非我把网卡设置为路由的子网,但这样的,我的工控软件就不干了,直接给我报错……
第三种情况:这个驱动本身其实是加密狗的破解,数据就是从加密狗插的LPT端用特殊软件读取出来的,我也稍微分析了一下,初步判断是对分别对生效日期和失效日期做加密,猜测可能是程序通过某些环节做对比。
我也实验过,在正常情况下,当主机的时间处于有效时间内,比如2005.1.1到2007.1.1这端时间内,这时开虚拟机,一切都OK。
如果主机时间是到了2007.1,2,开虚拟机进去就无效了。但关掉虚拟机,将主机时间改回2007,1,1,再开虚拟机进去就一切OK。所以第三种猜测可以基本被排除了。
因为本身属于加密狗的破解,与之相配套的工控软件配合的很紧密,而且全部配起来的话,恐怕一张DVD都不够,所以请恕无法提供。
我使用的是VMware Workstation 6.02 B 59824版本。应该没有很大差别。
13# 2008-3-7 20:13:40 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-7 21:41:09 | 显示全部楼层
化了一个多小时,反复再次做测试:
发现如果关闭Vmware tools,造成虚拟机和主机时间不同步,软件必定过期,即使主机时间属于有效期内。
只有开启Vmware tools,让主机和虚拟机时间同步后,且主机时间处于有效期内,软件才进入正常状态。这样就否定了我对于Vmware tools的判断,Vmware tools对我的软件还是有影响的,只是这是表现在时间方面而不是Vmware tools本身。同时推翻了我之前的猜测,加密程序读取的并非虚拟机的时间参数……
这样让我很疑惑,难道加密程序会知道我会导入虚拟机执行程序,而做了对应的加密部署?可如果这样的话,应该不会笨到只是通过简单的修改主机时间就可以绕过这条限制,太匪夷所思了。
我现在只能猜测,改程序会同时读取主机的时间和虚拟机的时间,做比较,相同的话,再与有效期做比较,我想目前为止只有这个比较解释的通了。所以我认为程序在通过某种手段读取主机的时间参数还是有一定根据的。
14# 2008-3-7 21:41:09 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2008-4-7 16:19:28 | 显示全部楼层
由于无法亲自尝试,很难想象“如果关闭Vmware tools,造成虚拟机和主机时间不同步,软件必定过期,即使主机时间属于有效期内”这种情况。难道Vmware tools的同步时间有什么独特之处?
终于查到了官方说明,可以先看这个:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1189
但这个讲的不够详细,细节部分全部在一个Timekeeping in VMware Virtual Machines的官方文档里有:
http://www.vmware.com/vmtn/resources/238
我方便你看,摘录出来,你照我这样写看看(添加到.vmx文件):
此外,注意以下这段说明:
简而言之,我们之前做的都是rtc.diffFromUTC固定时间偏移的方法,现在用rtc.startTime的固定绝对时间的方法或许有效,试试看吧,如果依然不行,那就真的在VM中实现不了虚拟时间了,至少在你的那个驱动层面
15# 2008-4-7 16:19:28 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-25 09:20 , Processed in 0.060221 second(s), 9 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表