USB透明加解密驱动_第1页
USB透明加解密驱动_第2页
USB透明加解密驱动_第3页
USB透明加解密驱动_第4页
USB透明加解密驱动_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、USB 透明加解密驱动By boywhp一、使用说明该驱动基于hook 技术实现了USB 指定目录透明加解密功能,在windows2000、XP、以及windows2003下测试通过,由于使用了fsd hook 技术,可能会与一些安全软件冲突。测试步骤如下: 1、启动binusbmon.sys2、插入U 盘【FAT32格式】,建立一个测试文件夹test 为加解密标识符,从硬盘拷贝一个文档到该目录,拔出U 盘。3、在另一台未安装驱动的机器上插入U 盘,文件已加密。4、插回原机器,文件被解密,卸载驱动。源代码位于codes 目录,v920是完整的版本,但是由于一些问题我没有很好的解决,所以你可以帮

2、忙完善下,你可以使用2000DDK 直接编译,也可以使用VC6直接编译。你可以自由修改代码,我有空也可以一起帮忙改进,如果你打算在商业代码中使用它,请开放代码,因为我痛恨它。 二、基本思路插入U 盘我们用DevView 看一下设备情况Root Driver :System32DRIVERSusbhub20.sysDriverusbhub20 - DeviceUSBPDO-6FILE_DEVICE_UNKNOWN usbhub20USB 通用驱动 System32DRIVERSUSBSTOR.SYS DriverUSBSTOR Device0000036 ->Pdo =DeviceUSBP

3、DO-6b oy wh p126.c omDevice0000037 ->Pdo =DeviceUSBPDO-6因此初步的设想是Hook USBSTOR 的数据读写处理函数,但是USBSTOR 并不常驻内存,因此我们要先顺便把它下层USBHUB 的PNP 事件也HOOK 掉,代码如下:Usbmon.c DriverEntry Line34:Globals.PnpHookHandle = SetupInlineHook(usbRoot->MajorFunctionIRP_MJ_PNP, HookPnpDevice, NULL;Usbmon.c HookPnpDevice Line83

4、: case IRP_MN_START_DEVICE:if (KeGetCurrentIrql( = PASSIVE_LEVEL /HOOK USBSTOR IRP_MJ_SCSIRtlInitUnicodeString(&usbStorName, USB_STOR_DRIVER_NAME;if (NT_SUCCESS(ObReferenceObjectByName(&usbStorName, OBJ_CASE_INSENSITIVE, NULL, 0, *IoDriverObjectType, 0, 0, &usbStor ObDereferenceObject(us

5、bStor;KdPrint("Usb device %08x %08x %08x started.n", DeviceObject, usbStor, irpStack->FileObject;if (Globals.UsbStorDriver && Globals.UsbStorDriver != usbStor ASSERT(Globals.ScsiHookHandle;KdPrint("RE_HOOK USBSTOR SCSI!" ClearInlineHook(Globals.ScsiHookHandle; Globals.

6、ScsiHookHandle = NULL;Globals.ScsiReadCompletionHandle = NULL; Globals.UsbStorDriver = usbStor; if (!Globals.ScsiHookHandle KdPrint("Hook UsbStor .n"Globals.ScsiHookHandle = SetupInlineHook(usbStor->MajorFunctionIRP_MJ_SCSI, HookUsbScsi, NULL; 这样我们就可以得到所有的USB 读写消息了,由于我们处理的相当底层了,因此这一层实际上

7、已经是SCSI 接口标准了,当然如果b oy wh p126.c om你要做全盘透明加密的话,还是可以考虑在这里处理加解密,但是会有一些很麻烦的小问题,比方说文件缓存的问题,我在驱动开发网上发了相关的问题,但是至今没有人回答。也许是这个比较难搞吧,如果你了解scsi 以及windows 内核,你可以看看v920,里面有更多好玩的东西。这里我们的目标是加解密指定的文件夹,但是在usbstor 这一层已经没有任何的文件对象了,这点你可以用windbg 验证。所以我们需要一个更上层的hook,也就是hook windows 文件系统,因为Mj告诉我Irp 到那一层还是有文件对象的。fsdhook 网

8、上流传的多是hook ntfs,但是一般的U 盘都是Fat 格式的,hoho。不过原理是一样的,只是hook fastfat 而已。Usbmon.c DriverEntry Line213:Globals.fsdReadHookHandle = SetupInlineHook(Globals.FastFatDriver->MajorFunctionIRP_MJ_READ, HookFsdReadWrite, NULL;Globals.fsdWriteHookHandle = SetupInlineHook(Globals.FastFatDriver->MajorFunctionIRP_MJ_WRITE, HookFsdReadWrite, NULL;这样所有的文件数据都会在HookFsdReadWrite 中流过,而且你也有一个文件对象。相关代码太简单了,注意的一点就是加密的时候记得最后要恢复原始数据到Mdl。至于SetupInlineHook,也很简单,稍微了解一点汇编,在图上画几下应该可以明白。 b oy wh p126.c om三、后记220行代码的USB透明加密复杂吗?为什么google不到任何资料?很是郁闷。也许一些关键技术是要保密吧,但是我痛恨没有资料。痛恨那些个从互联网

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论