阅读:1683回复:5
vcmfc斑竹请进!
Hi,vcmfc!
想和你聊一下驱动开发技术 最近正在做虚拟磁盘的加密解密,基于filedisk程序的。 case IRP_MJ_READ: CurrentAddress = MmGetSystemAddressForMdlSafe(irp- > MdlAddress, NormalPagePriority); buf=ExAllocatePool(NonPagedPool,io_stack->Parameters.Read.Length); ZwReadFile( device_extension->file_handle, NULL, NULL, NULL, &irp->IoStatus, buf, io_stack->Parameters.Read.Length, &io_stack->Parameters.Read.ByteOffset, NULL ); iModel = io_stack->Parameters.Read.Length%8; //求余数 iOK = io_stack->Parameters.Read.Length/8; //求整除 tmp = buf; for(i=0;i<iOK;i++) { for(j=0;j<4;j++) { tmpchar = tmp[j]; tmp[j] = tmp[7-j]; tmp[7-j] = tmpchar; } tmp += 8; } //lRet = Is_DesDecrypt(buf, io_stack->Parameters.Read.Length, tmp, keybits); RtlCopyMemory(CurrentAddress,buf,io_stack->Parameters.Read.Length); ExFreePool(buf); break; case IRP_MJ_WRITE: if ((io_stack->Parameters.Write.ByteOffset.QuadPart + io_stack->Parameters.Write.Length) > device_extension->file_size.QuadPart) { irp->IoStatus.Status = STATUS_INVALID_PARAMETER; irp->IoStatus.Information = 0; } CurrentAddress = MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority); buf=ExAllocatePool(NonPagedPool,io_stack->Parameters.Write.Length); RtlCopyMemory(buf,CurrentAddress,io_stack->Parameters.Write.Length); iModel = io_stack->Parameters.Write.Length%8; //求余数 iOK = io_stack->Parameters.Write.Length/8; //求整除 tmp = buf; for(i=0;i<iOK;i++) { for(j=0;j<4;j++) { tmpchar = tmp[j]; tmp[j] = tmp[7-j]; tmp[7-j] = tmpchar; } tmp += 8; } //lRet = Is_DesEncrypt(buf, io_stack->Parameters.Write.Length, tmp, keybits); ZwWriteFile( device_extension->file_handle, NULL, NULL, NULL, &irp->IoStatus, buf, io_stack->Parameters.Write.Length, &io_stack->Parameters.Write.ByteOffset, NULL ); ExFreePool(buf); break; 我一开始是用很简单的加密方法(调换位置),然后就用函数Is_DesEncrypt进行加密(被注释掉了,基于des算法,在其它地方使用一切正常),这时候系统就崩溃了,想请问一下是不是des算法不能直接嵌入到驱动层(应用层没有问题)。 |
|
最新喜欢:![]()
|
沙发#
发布于:2003-05-05 05:03
一般加密算法是不需要太多的修改,有的可能要调整一下。如果内核能行的话,该没有问题呀!!! 声明:本人非版主................... :D 现在还有人在线???? |
|
板凳#
发布于:2003-06-03 02:28
问题解决很简单,就是在写入数据的时候,
数据在写入之前加密,执行Write后,数据要解密 但为什么一直没有搞明白,如果你弄明白了讲解一下 不知道能给多少分 |
|
|
地板#
发布于:2003-06-03 09:20
很奇怪,最后换了加密解密算法就ok了 :)
|
|
|
地下室#
发布于:2003-06-06 17:03
des太慢
|
|
|
5楼#
发布于:2004-08-06 18:31
很奇怪,最后换了加密解密算法就ok了 :) 请问你最后用的什么算法? 我也在做这个,能给代码参考一下子吗 my mail: wangdaokou@163.com |
|