一种虚拟机性能分析的方法及系统的制作方法

文档序号:8361734阅读:260来源:国知局
一种虚拟机性能分析的方法及系统的制作方法【
技术领域
】[0001]本发明涉及软件保护领域,特别涉及一种虚拟机性能分析的方法及系统。【
背景技术
】[0002]软件作为一种特殊的产品,由于其数字化的特征,从问世起就一直遭受盗版的困扰。盗版的存在不仅给软件开发者造成了巨大的损失,也极大地阻碍了整个软件行业的发展。目前可以采用虚拟机对软件进行保护,采用虚拟机对软件进行保护主要是对代码进行了虚拟化,使得代码的安全强度大大提高,但是该方法的缺点是会导致软件的执行效率下降,比如一些界面刷新函数虚拟化后可能会导致软件界面反映迟钝,而使用虚拟机的人员对于是哪些函数保护后导致运行变慢可能并不了解。【
发明内容】[0003]有鉴于此,本发明公开了对虚拟机性能分析的方法及系统,以确定进行虚拟化保护后导致可执行文件运行效率降低的函数并将其从需要保护的函数列表中筛除。[0004]为实现上述目的,本发明提供一种虚拟机性能分析的方法,所述方法的操作步骤如下:[0005]S1:对于可执行文件中的选定的需要保护的函数中的每一个函数,在函数入口前插入代码I,并且在函数出口后插入代码2;[0006]S2:对所述需要保护的函数进行虚拟化保护后,运行所述可执行文件;[0007]S3:在运行所述可执行文件的过程中,通过代码I和代码2记录所述需要保护的函数中的各函数被调用的调用时间和/或调用次数;[0008]S4:可执行文件退出运行,并根据所记录的所述需要保护的函数中的各函数的调用时间和/或调用次数来判定所述各函数中是否存在影响可执行文件的运行性能的函数,如果不存在则完成对所述可执行文件的保护,如果存在,则取消对所述影响可执行文件的运行性能的函数的虚拟化保护的方式重新在所述可执行文件中选定需要保护的函数来进行虚拟化保护。[0009]优选地,判定所述各函数中是否存在影响可执行文件的运行性能的函数具体为,判定所述各函数中是否存在调用时间和/或调用次数超过预定数值的函数。[0010]优选地,通过代码I和代码2记录所述需要保护的函数中的各函数的调用时间具体为,通过代码I和代码2记录所述各函数的开始调用时间和结束调用时间以计算出所述各函数的调用时间。[0011]优选地,自动选择所述可执行文件中的预定位置的预定数目个函数作为所述选定的需要保护的函数,或手动选择所述可执行文件中的函数作为所述选定的需要保护的函数。[0012]优选地,在S2中的运行所述可执行文件之前还包括运行性能分析程序,所述性能分析程序在可执行文件运行期间通过代码I和代码2获取所述需要保护的函数中的各函数的调用次数和/或调用时间。[0013]优选地,在所述需要保护的函数中的函数被调用时,代码I向所述性能分析程序发送第一消息,该第一消息包括被调用的函数的相对虚拟地址和当前时间;在所述被调用的函数结束被调用时,代码2向所述性能分析程序发送第二消息,所述第二消息包括被调用的函数的相对虚拟地址和当前时间。[0014]优选地,所述第一消息及所述第二消息还包括被调用的函数的当前线程ID。[0015]本发明还提供了一种虚拟机性能分析的系统,所述系统包括:函数保护模块,其配置为对于可执行文件中的选定的需要保护的函数中的每一个函数,在函数入口前插入代码1,并且在函数出口后插入代码2后,对所述需要保护的函数进行虚拟化保护;性能分析模块,其配置为在所述可执行文件的运行过程中,通过代码I和代码2记录所述需要保护的函数中的各函数被调用的调用时间和/或调用次数;性能判定模块,其配置为在可执行文件退出运行后,根据所述性能分析模块所记录的所述需要保护的函数中的各函数的调用时间和/或调用次数来判定该各函数中是否存在影响可执行文件的运行性能的函数,如果不存在则完成对所述可执行文件的保护,如果存在,则向所述函数保护模块发送所述影响可执行文件的运行性能的函数的相关信息,其中,所述函数保护模块还配置为在接收到来自所述性能判定模块的所述相关信息时,取消对所述影响可执行文件的运行性能的函数的虚拟化保护的方式重新在所述可执行文件中选定需要保护的函数来进行虚拟化保护。[0016]优选地,所述性能判定模块具体配置为判定所述各函数中是否存在调用时间和/或调用次数超过预定数值的函数。[0017]优选地,所述性能分析模块具体配置为通过代码I和代码2记录所述各函数的开始调用时间和结束调用时间以计算出所述各函数的调用时间。[0018]优选地,所述函数保护模块还配置为自动选择所述可执行文件中的预定位置的预定数目个函数作为所述选定的需要保护的函数,或配置为将用户手动选择的所述可执行文件中的函数作为所述选定的需要保护的函数。[0019]优选地,所述性能分析模块在所述可执行文件运行之前启动。[0020]优选地,所述性能分析模块具体配置为,在所述需要保护的函数中的函数被调用时,接收代码I发送的第一消息,该第一消息包括被调用的函数的相对虚拟地址和当前时间;在所述被调用的函数结束被调用时,接收代码2发送的第二消息,所述第二消息包括被调用的函数的相对虚拟地址和当前时间。[0021]优选地,所述第一消息及所述第二消息中还包括被调用的函数的当前线程ID。[0022]本发明的有益效果在于:[0023]1、本发明对采用虚拟化保护后的可执行文件中的函数的性能进行分析,在保证保护可靠性及安全性的同时,确定导致降低可执行文件运行速度,或影响可执行文件正常运行的函数,并将其从需要保护的函数列表中筛出,从而在不损失文件安全性的同时提高了文件运行的效率。[0024]2、性能分析程序能够显示每一个函数的调用次数和调用时间,从而使用户直观的看到各个函数保护后的调用时间及调用次数。【附图说明】[0025]图1为根据本发明的一优选实施例的虚拟化保护过程的流程图。[0026]图2为根据本发明的一优选实施例中的虚拟机性能分析系统的示意图。【具体实施方式】[0027]为使本发明的目的,技术方案及有益效果更加明确,下文将结合附图详细描述本发明。[0028]在本发明的实施例中,以微软Windows系统下32位的PE(可移植的执行体,PortableExecute)文件(下文中称为可执行文件)为例,来描述本发明的实施例提供的虚拟机性能分析的具体过程。[0029]PE文件是微软Windows操作系统上的程序文件(可能间接被执行,如DLL)。常见的PE文件包括EXE、DLL、OCX、SYS、COM文件等。[0030]PE文件结构主要包括区段(Sect1n)、区段表(Sect1nTable)、PE头部(PEHeader)和DOS头部(DOSHeader)。PE文件各个部分的详细定义可参阅微软windows系统的联机帮助,因此在说明书中将不做过多介绍。[0031]图1为根据本发明的一优选实施例的虚拟化保护过程的流程图。[0032]如图1所示,本实施例公开的虚拟机性能分析的方法的操作步骤如下:[0033]S1:选择可执行文件,并选定可执行文件中需要保护的函数,对于每一个选定的需要保护的函数,在函数入口前插入代码1,并且在函数出口后插入代码2。[0034]在SI之后,可以自动选择可执行文件中的预定位置的预定数目个函数作为选定的需要保护的函数,例如,默认选择可执行文件中的前50个函数,也可以手动选择可执行文件中的函数作为选定的需要保护的函数。[0035]在对需要保护的函数进行虚拟化保护之前(即步骤S2之前),可以运行性能分析程序,其能够在可执行文件运行期间通过代码I和代码2获取需要保护的函数中的各函数的调用次数和/或调用时间。[0036]S2:对需要保护的函数进行虚拟化保护,然后运行可执行文件;[0037]S3:在运行可执行文件的过程中,通过代码I和代码2记录需要保护的函数中的各函数被调用的调用时间和/或调用次数;[0038]在步骤S3中,当需要保护的函数中的函数被调用时,代码I可向性能分析程序发送第一消息,该第一消息可包括被调用的函数的相对虚拟地址和当前时间;在被调用的函数结束被调用时,代码2可向性能分析程序发送第二消息,第二消息可包括被调用的函数的相对虚拟地址和当前时间。此外,第一消息及第二消息还可包括被调用的函数的当前线程ID。[0039]调用时间的具体计算方法为,通过代码I和代码2记录各函数的开始调用时间和结束调用时间,并且使用结束调用时间减去开始调用时间,从而计算出各函数的调用时间。[0040]调用次数的具体计算方法将在下文的实例中描述。[0041]假设可执行文件中有两个需要保护的函数,分别为函数A及函数B。当调用函数A时,代码I向性能分析程序发送关于函数A的第一消息,并且性能分析程序将函数A的调用次数加I。在函数A结束调用之前,如果函数B始终没有被调用,则函数A结束调用,并且向性能分析程序发送关于函数A的第二消息;如果在调用函数A的过程中函数B被调用,则代码I先向性能分析程序发送关于函数B的第一消息并且性能分析程序将函数B的调用次数加1,然后,代码2向性能分析程序发送关于在先结束调用的函数A的第二消息,最后再向性能分析程序发送关于在后结束调用的函数B的第二消息。[0042]性能分析程序可以通过函数的相对虚拟地址来判断函数的地址,从而能够准确地定位每个所选定的需要保护的函数的地址。[0043]此外,性能分析程序还可以通过当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1