一种windows下隐藏盘符的方法技术

技术编号:37889657 阅读:11 留言:0更新日期:2023-06-18 11:53
本发明专利技术提出一种windows下隐藏盘符的方法,包括如下步骤:S1:将隐藏盘符的值保存到注册表自定义位置中;S2:Hook API函数SHRestricted;S3:Windows进程当获取拥有权限时,Hook程序截获内部调用的API函数SHRestricted;S4:中断SHRestricted的执行,读取并返回隐藏盘符的值,达到隐藏盘符的目的。本发明专利技术通过Hook API函数SHRestricted,截获Windows进程当获取拥有权限时内部调用的API函数SHRestricted并中止其执行,读取并返回隐藏盘符的值,达到隐藏盘符的目的,极大的减轻对进程的性能影响。对进程的性能影响。对进程的性能影响。

【技术实现步骤摘要】
一种windows下隐藏盘符的方法


[0001]本专利技术涉及一种windows下隐藏盘符的方法,属于盘符隐藏


技术介绍

[0002]Windows下隐藏盘符功能广泛用于安全的多个领域,如杀毒软件的隔离沙箱功能,Windows操作系统会把要隐藏的盘符写入到注册表保存起来。可通过Hook注册表读取SHGetValue API来实现这一功能。当应用程序要显示盘符时,会内部调用SHGetValue读取注册表,获取当前要隐藏哪些盘符,通过Hook,修改SHGetValue的返回值,来达到隐藏指定盘符的目的。
[0003]现有实现方式下,会极大影响进程的性能,因为在进程运行过程中,会调用SHGetValue API函数读取大量的注册表,绝大部分操作跟隐藏盘符都是无关的。

技术实现思路

[0004]为解决上述问题,本专利技术提出一种windows下隐藏盘符的方法,具体技术方案如下,
[0005]一种windows下隐藏盘符的方法,包括如下步骤:
[0006]S1:将隐藏盘符的值保存到注册表自定义位置中;
[0007]S2:Hook API函数SHRestricted;
[0008]S3:Windows进程当获取拥有权限时,Hook程序截获内部调用的API函数SHRestricted;
[0009]S4:中断SHRestricted的执行,读取并返回隐藏盘符的值,达到隐藏盘符的目的。
[0010]优选的,所述API函数SHRestricted的声明如下:DWORD SHRestricted(RESTRICTIONS rest);参数RESTRICTIONS rest代表了应用程序要获取的权限类型,针对隐藏盘符,其值为REST_NODRIVES或REST_NOVIEWONDRIVE。
[0011]进一步的,所述隐藏盘符的值的计算方法为数字1左移隐藏盘符的个数。
[0012]进一步的,所述S3 Windows进程当获取拥有权限时,内部会调用API函数SHRestricted并分别传入参数REST_NODRIVES和REST_NOVIEWONDRIVE。
[0013]本专利技术通过Hook API函数SHRestricted,截获Windows进程当获取拥有权限时内部调用的API函数SHRestricted并中止其执行,读取并返回隐藏盘符的值,达到隐藏盘符的目的,极大的减轻对进程的性能影响。
附图说明
[0014]图1是本专利技术一实施例的工作流程图。
具体实施方式
[0015]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0016]API:Application Programming Interface应用程序编程接口。
[0017]Hook:钩子或挂钩,把原来的API函数替换为我们的函数,实现我们自定义功能。
[0018]注册表:windows下用来保存系统和进程设置信息的数据库。
[0019]记事本:notepad,windows下文本编辑程序。
[0020]Windows进程当获取拥有权限时,会调用API函数SHRestricted,该函数的声明如下:DWORD SHRestricted(RESTRICTIONS rest);参数RESTRICTIONS rest代表了应用程序要获取的权限类型,针对隐藏盘符,其值为REST_NODRIVES或REST_NOVIEWONDRIVE。
[0021]一种windows下隐藏盘符的方法,包括如下步骤:
[0022]S1:将隐藏盘符的值保存到注册表自定义位置中;所述隐藏盘符的值的计算方法为数字1左移隐藏盘符的个数;
[0023]S2:Hook API函数SHRestricted;
[0024]S3:Windows进程当获取拥有权限时,内部会调用API函数SHRestricted并分别传入参数REST_NODRIVES和REST_NOVIEWONDRIVE,Hook程序截获内部调用的API函数SHRestricted;
[0025]S4:中断SHRestricted的执行,读取并返回隐藏盘符的值,达到隐藏盘符的目的。
[0026]假设创建的V盘需要对记事本notepad隐藏,首先把隐藏盘符的值保存到注册表中,值的计算方法为数字1左移隐藏盘符的个数,即注册表保存的值=1左移(

v
’‑‘
a

)=0x00200000。
[0027]当记事本通过菜单栏“文件

>打开”选择文件时,内部会调用SHRestricted并分别传入参数REST_NODRIVES和REST_NOVIEWONDRIVE,这时Hook的程序会截获这一动作,中断SHRestricted的执行,读取并返回隐藏盘符的值即上文0x00200000。这样记事本即看不到V盘盘符。通过以上思路,实现了只在记事本需要显示盘符的时候才处理并隐藏指定盘符。
[0028]具体执行流程如图1所示,
[0029]1.首先计算V盘对应的值为0x00200000保存在注册表自定义位置中。
[0030]2.Hook API函数SHRestricted。
[0031]3.当记事本执行“文件

打开”操作时,由于第二步已经Hook,程序会截获这一通知,当参数为REST_NODRIVES或REST_NOVIEWONDRIVE时,直接返回0x00200000,从而记事本就看不到V盘,达到隐藏盘符的目的。
[0032]本专利技术确保在实现隐藏盘符功能的基础上,通过研究发现只需要Hook更上层的函数,确保只有在进程访问隐藏盘符的时候才会调用我们的函数,极大减轻了对进程的性能影响。
[0033]在具体应用过程中,作为安全厂商,经常需要创建自己的虚拟存储盘符,并且对外要隐藏。如金盾VDP视频安全防护系统是针对视频的下载进行控制的一款产品,在运行过程中,需要创立一个虚拟存储盘符V盘来存放要控制的视频。V盘需要对其他进程如资源管理器隐藏。通过Hook SHGetValue,虽达到隐藏效果,但是会造成资源管理器显示文件过慢和不稳定,极大影响用户使用体验。通过采用本专利技术方案,在实现隐藏V盘的基础上对资源管
理器的运行速度基本上无影响。经过长期的用户验证,方案具有兼容性和稳定性。
[0034]本专利技术通过Hook SHRestricted来实现隐藏盘符功能,且支持所有Windows用户级操作系统(XP、Win7、Win8、Win10、Win11)及服务器操作系统(包括Server 2003、Server2008、本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种windows下隐藏盘符的方法,其特征在于,包括如下步骤:S1:将隐藏盘符的值保存到注册表自定义位置中;S2:Hook API函数SHRestricted;S3:Windows进程当获取拥有权限时,Hook程序截获内部调用的API函数SHRestricted;S4:中断SHRestricted的执行,读取并返回隐藏盘符的值,达到隐藏盘符的目的。2.根据权利要求1所述的一种windows下隐藏盘符的方法,其特征在于,所述API函数SHRestricted的声明如下:DWORD SHRestricted(RESTRICTIONS re...

【专利技术属性】
技术研发人员:朱明杜峰王金清
申请(专利权)人:山东华软金盾软件股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1