U盘防拷贝组件
发布日期:2021-06-30 22:04:04 浏览次数:2 分类:技术文章

本文共 1082 字,大约阅读时间需要 3 分钟。

引言

最近遇到一道题, 需求: 根据策略配置, 防止向U盘中拷贝文件,要求在R3完成.

非常感谢wu对关键技术点的指点!

工程下载 

感受

这2个星期都在做这个工程, 细节还是蛮多的, 一个一个的小问题,一个一个的搞定. 

我想,5天要搞定这个组件. 如果不是从已经实现的Demo中,迁出相应的功能, 绝对做不完.

这篇文章在PEDIY上被加精, 开心~

防止向U盘拷贝的内容

  文件

  文件夹

  文件夹中任意目录中存在的特定文件后缀的文件

测试

今天经过自己在实体机测试, 得到以下测试结论

在Win7X64下达到了需求的要求.

在WinXpX86Sp3下达到了需求的要求.

Win7X86没有实体机, Vmware中的Windows不认识我的USB3.0U盘, 暂时中断该平台的测试.

用ApiMonitor可以看到, Win7X64和win7X86的文件操作,调用的COM API都是相同的.

软件实现思路

  * WinXp下, Hook Win32API, 实现禁止通过资源管理器向U盘拷贝文件

  * Win7(x86/x64)下, Hook COM API, 实现禁止通过资源管理器向U盘拷贝文件

软件组件构成

 * CtrlProg.exe : 控制程序, 负责策略的定制, Hook DLL 的控制(安装, 卸载)

 * LsApiHook.dll:  Hook Win32API, 实现在WinXp下U盘 DLP

                                Hook函数列表:     CopyFileExW

                                                                CreateFileW

 * LsComHookProxy.dll, Hook COM API, 实现在Win7(x86/x64)下U盘DLP

                                Hook函数列表: CoCreateInstance, 

                                                IFileOperation::CopyItems
                                                IFileOperation::MoveItems
                                                IFileOperation::NewItem
                                                IFileOperation::RenameItem

技术点

 * COM接口方法地址的取得

 * 在C++程序中调用C方式的COM接口方法

策略定制

* 禁止/允许向U盘中拷贝文件夹

* 禁止/允许向U盘中拷贝特定文件后缀的文件

 在产品中,随着实际需求的细化, 细化策略,细化文件控制.

备注

  * 在产品中用, 控制程序要由驱动保护, 防止被关掉.

  * 策略的下达, 一般不是由控制程序下发.

  * 产品中, 特定后缀类型的文件的判断,要由PE文件实际内容判定,而不是文件后缀名

软件截图

当不需要运行时,直接关掉控制程序 或 通过菜单禁止HOOK后,再退出程序.

转载地址:https://lostspeed.blog.csdn.net/article/details/12654449 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:note : calculate opcode address
下一篇:note : get COM interface method address

发表评论

最新留言

不错!
[***.144.177.141]2024年04月26日 16时54分54秒