U盘防拷贝组件工程
[*]引言
最近遇到一道题, 需求: 根据策略配置, 防止向U盘中拷贝文件,要求在R3完成.
非常感谢wu对关键技术点的指点!
[*]工程下载
请见帖子底部附件
srcUDiskCpyManager_V2013_1012_1653.rar
[*]感受
这2个星期都在做这个工程, 细节还是蛮多的, 一个一个的小问题,一个一个的搞定.
我想,5天要搞定这个组件. 如果不是从已经实现的Demo中,迁出相应的功能, 绝对做不完.
[*]防止向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文件实际内容判定,而不是文件后缀名
[*]软件截图






