访问虚拟磁盘的方法及系统的制作方法

文档序号:9787710阅读:445来源:国知局
访问虚拟磁盘的方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据安全技术领域,尤其是涉及一种访问虚拟磁盘的方法及系统。
【背景技术】
[0002]在现在的项目中,对一个加密的文件进行解密,文件比较小可以在内存里直接进行解密并存储在字符串内存中;在文件比较大且文件数比较多时,通常是压缩成一个文件然后再加密,在解密的过程中则是直接把它们放到一个比较隐藏且不易被用户发现的文件夹里。这两种方法不是管理有繁锁就是安全性有问题。
[0003]图1为现有技术中常规的访问进程处理方式。虚拟磁盘虽然可以保存数据,在安全性上也面临着同样的问题。由于虚拟磁盘是通过驱动层1对指定的文件进行读写来实现的,以WINDOWS为例,虚拟磁盘需要在系统添加一个设备,公开磁盘的盘符,所有的进程都可以访问同一个虚拟磁盘。因此,对于一些比较重要的文件无法保证其数据的安全性,或者无法提高数据的安全性门槛。具体地,数据暴露在虚拟盘符对应的磁盘下,很容易被发现并访问,甚至篡改;不能进行进程隔离,所有的进程都可以访问磁盘,在系统感染病毒后数据安全无法保证。

【发明内容】

[0004]本发明所要解决的技术问题是:提供访问虚拟磁盘的新方式,提高虚拟磁盘的安全性。
[0005]为了解决上述技术问题,本发明采用的技术方案为:提供一种访问虚拟磁盘的方法,包括:
[0006]启动工程,加载虚拟磁盘模块,注册对应于虚拟磁盘路径的盘符;
[0007]拦截访问虚拟磁盘进程有关的API函数,使得系统在调用所述API函数时,先处理虚拟磁盘模块的文件操作模拟函数;
[0008]返回对模拟函数的处理结果到系统API函数中,并输出结果参数。
[0009 ]为解决上述问题,本发明还提供一种访问虚拟磁盘的系统,包括:
[0010]加载注册模块,用于启动工程,加载虚拟磁盘模块,注册对应于虚拟磁盘路径的盘符;
[0011]拦截处理模块,用于拦截访问虚拟磁盘进程有关的API函数,使得系统在调用所述API函数时,先处理虚拟磁盘模块的文件操作模拟函数;
[0012]结果输出模块,用于返回对模拟函数的处理结果到系统API函数中,并输出结果参数。
[0013]本发明的有益效果在于:区别于现有技术,本发明开始后即加载虚拟磁盘模块,并拦截访问虚拟磁盘进程有关的API函数,是的系统在调用时,优先处理虚拟磁盘模块的文件操作模拟函数,并输出处理结果。通过上述方式,本发明的集成可以正常访问所要的数据,并同时实现进程隔离,提升虚拟磁盘的安全性。
【附图说明】
[0014]图1为现有技术进程访问的常规方式示意图;
[0015]图2为本发明方法实施例一的流程示意图;
[0016]图3为本发明系统实施例二的结构框图;
[0017]图4为应用本发明方法的具体实施例中的流程示意图。
【具体实施方式】
[0018]为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0019]本发明最关键的构思在于:基于应用层来实现的一种虚拟磁盘方法,通过API拦截技术,对磁盘访问进行API重定位,向虚拟磁盘注册盘符,通过调用系统API以指定文件所在自定义盘符的路径,进程就可以正常的访问到所要的数据。
[0020]请参照图1,本发明实施例一提供一种访问虚拟磁盘的方法,包括:
[0021 ] SI:启动工程,加载虚拟磁盘模块,注册对应于虚拟磁盘路径的盘符;
[0022]S2:拦截访问虚拟磁盘进程有关的API函数,使得系统在调用所述API函数时,先处理虚拟磁盘模块的文件操作模拟函数;
[0023]S3:返回对模拟函数的处理结果到系统API函数中,并输出结果参数。
[0024]本发明基于应用层来实现的一种虚拟磁盘方法,通过API拦截技术,对磁盘访问进行API重定位,进程不需要向系统添加硬件设备,只要调用者向虚拟磁盘注册一个自定义的盘符即可,通过调用系统API,指定文件所在自定义盘符的路径,进程就可以正常的访问到所要的数据。这与在程序中访问某个盘符的磁盘代码原理相同,但与基于驱动层实现的虚拟磁盘不同,且在安全性方面高于驱动层虚拟磁盘。
[0025]应当理解的是,本发明所述的API拦截函数是用于拦截API的函数,而系统API函数是被拦截的函数。
[0026]具体地,在调用者的工程中,通过加载虚拟磁盘模块,向虚拟磁盘注册盘符,此盘符对应虚拟磁盘的路径。
[0027]其中,步骤S2具体为:
[0028]获取API函数对虚拟磁盘的访问进程;
[0029]API拦截函数判断访问进程是否访问虚拟磁盘;
[0030]若是,则处理虚拟磁盘模块的文件操作模拟函数后,将处理结果通过返回值或参数返回给调用者;
[0031]反之,则直接由系统API函数进行操作,即执行后续逻辑请求,并将结果返回给调用者。
[0032]其中,系统API函数不被操作,而是直接返回数值或结果。因为它操作的是虚拟磁盘,如果由系统API函数返回的话,程序会操作本地磁盘从而引起错误。
[0033]而在实际操作时,API拦截函数判断访问进程是否访问虚拟磁盘可通过下述两种方式实现,即
[0034]API拦截函数通过盘符判断访问进程是否访问虚拟磁盘;或
[0035]API拦截函数通过访问文件的标识判断访问进程是否访问虚拟磁盘。
[0036]其中,在操作模拟函数之前,需要虚拟磁盘模块创建储存空间,用于存储文件的标识、数据信息,储存空间可以在程序开始前就创建,或者在其他步骤操作时进行;
[0037]而对应地,处理虚拟磁盘模块的文件操作模拟函数的步骤具体为:
[0038]在访问文件时,访问进程指定虚拟磁盘路径,系统API函数从文件系统中获取文件在磁盘中的存储位置,并返回对应标识;
[0039 ]通过对应标识,虚拟磁盘模块的文件系统获取文件在虚拟磁盘中的位置;
[0040]根据文件的数据信息及虚拟磁盘模块文件系统的文件游标位置信息,读取或写入数据。
[0041]而在返回结果时,可通过调用虚拟磁盘模块文件系统的相应函数来获取数据,并返回给调用者。
[0042]具体地,在虚拟磁盘模块被加载后,会对此进程的相关API函数进行拦截,以windows为例(其它系统原理类似),通过对CreateFiIe、WriteFiIe、ReadFiIe等对磁盘操作的相关函数进行拦截,使得系统在调用这些函数时优先去处理虚拟磁盘模块的文件操作函数。拦截函数会先判断访问的对象是否是虚拟磁盘(在CreateFi Ie是以盘符来判断,在其它函数以其它标识来判断,如句柄。如果是操作虚拟磁盘,则对虚拟磁盘数据进行处理;否则直接把操作提交给系统API。处理完模拟函数后,再将结果返回到系统API的返回值中,如附图所示。对磁盘操作的所有系统API函数进行拦截和模拟,完全可以控制对磁盘的操作。对于虚拟磁盘模块调用者来说,对虚拟磁盘的操作与对物理磁盘的操作没有什么不一样。
[0043]在虚拟磁盘模块被加载时,虚拟磁盘模块会创建储存空间。当进程指定虚拟磁盘路径并打开一个文件时,函数会先从文件系统中找到文件在磁盘中存放的位置,然后返回文件位置对应的标识,此标识是文件在虚拟磁盘中唯一的标识(比如句柄)。在对文件进行读写操作时,虚拟磁盘模块的文件系统会用标识找到文件所在的位置,然后根据要读取数据的长度或要写入的数据和文件系统记录的文件游标位置,读取或写入数据。虚拟磁盘模块通过调用文件系统的相应的函数来获取数据,并返回给调用者。
[0044]通过加载虚拟磁盘模块,此模块成为此进程的一个子模块,在操作系统中,进程是独立的,不会互相干扰。因此,虚拟磁盘的拦
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1