windows 弹shell_Windows 网络编程:U盘防御软件

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587


a80b141e52efe6be06664947ca0fb520.png

图1  禁用“Shell Hardware Detection”服务

将服务中的“Shell Hardware Detection”禁用后,再来对“组策略”进行设置。首先在“运行”中输入“gpedit.msc”,然后依次单击左边的树形控件,“计算机配置”->“管理模板”->“系统”,然后在右边双击“关闭自动播放”选项,弹出“关闭自动播放 属性”对话框,在“设置”选项卡中选择“已启用”单选项,在“关闭自动播放”处选择“所有驱动器”选项,设置完成后单击“确定”按钮。再到左边的树形控件中选择“用户配置”->“管理模板”->“系统”,到右边找到“自动关闭播放”选项,设置方法同上,如图2所示。

4acab02780fc421d5f3ecf538037da9c.png

该消息通过两个附加参数来进行使用,其中wParam表示设备改变的事件,lParam表示事件对应的数据。我们要得到设备被插入的消息类型,因此wParam的取值为DBT_DEVICEARRIVAL,而该消息对应的数据的数据类型为DEV_BROADCAST_HDR,该结构体的定义如下:

224ed82e8a4b61258669534dcee7f3de.png

在该结构体中主要是dbcv_unitmask和dbcv_flags。dbcv_unitmask通过位来表示逻辑盘符,第0位表示A盘,第1位表示B盘。dbcv_flags表示受影响的盘符或媒介,该值为0时表示U盘或移动硬盘。

上面介绍了关于WM_DEVICECHANGE这个消息,由于是在MFC下进行开发的,因此可以使用OnDeviceChange()这个消息响应函数来进行代替WM_DEVICECHANGE消息。虽然使用了OnDeviceChange()这个消息响应函数而没有使用WM_DEVICECHANGE,但是响应函数的附加参数与WM_DEVICECHANGE相同。OnDeviceChange()函数定义如下:

0df123ee00b6facd8729b5af7e0a679c.png

在头文件中添加消息响应函数的定义,定义如下:

1e53a628486191a7dec0aff1b9768a1b.png

我们将其编译连接并运行,插入一个U盘,得到如图3所示的提示。

52181ae171304d3e31d68545c2e5bd0c.png

在使用类似DBT_DEVICEARRIVAL这样以DBT_开头的宏时应包含头文件“dbt.h”文件。

五、U盘防火墙的完善

前面已经获得了被插入U盘的盘符,接下来就可以对U盘上的Autorun.inf文件进行分析,并删除要运行的程序,还可以安全地打开U盘。改写一下OnDeviceChange()函数,以实现要完成的功能,代码如下:

f57ccb8b1b8556fc2460575bbe176f69.png

用DeleteFile()函数删除U盘中要运行的程序可能会失败,因为有时U盘并没有完全准备好。可以通过判断来完成,但这里就不给出代码了,大家可自行修改完成。在代码中,涉及到两个新的API函数,分别是GetPrivateProfileString()和ShellExecute()函数。这两个函数的功能分别是获取配置文件中指定键的键值,和运行指定的文件或文件夹,大家可以通过查询MSDN进行详细地了解。

在上面的程序中,通过提示让用户选择是否要删除掉U盘中要被执行的文件,如果用户对此并没有太多的了解和认识的话很有可能不删除。如果删了本不该删的文件,那么用户对该软件的友好感便会降低,那应该如何做呢该建立一个白名单和黑名单,无论是通过散列进行比较,还是通过文件名进行比较,都可以。当然,越精确的匹配方法越好。这样,就可以提早一步为用户进行判断了,然后给出一个安全建议,不但提高了软件的友好感,而且会显得相对较为专业了。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】 相关资源:PPT中FLASH插入软件.rar-Flash文档类资源-CSDN文库

来源:weixin_39621669

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月22日
下一篇 2020年9月23日

相关推荐