阅读:1624回复:4
fidisk加密的问题,有答案就散分!!!
帮忙回答一下有答案就散分!
我在fidisk的基础上做加密,处理IRP_MJ_READ,IRP_MJ_WRITE 我对读取,写入的数据简单的取反没有问题,可当我使用分组加密时总是一加载 虚拟硬盘就重起,或者无法格式化,我知道由于分组处理后数据长度有变化,可是该怎样处理分组对 齐的问题呢?谢谢! [编辑 - 7/7/03 by song1484] |
|
沙发#
发布于:2003-07-09 23:30
无法格式化可能是你没有解密你加密后的那段内存。
case IRP_MJ_READ: pBuf = MmGetSystemAddressForMdl(irp->MdlAddress); Len = io_stack->Parameters.Read.Length; ZwReadFile( device_extension->file_handle, NULL, NULL, NULL, &irp->IoStatus, pBuf, Len, &io_stack->Parameters.Read.ByteOffset, NULL ); decrypt(pBuf,Len); break; case IRP_MJ_WRITE: pBuf = MmGetSystemAddressForMdl(irp->MdlAddress); Len = io_stack->Parameters.Write.Length; encrypt(pBuf,Len); ZwWriteFile( device_extension->file_handle, NULL, NULL, NULL, &irp->IoStatus, pBuf, Len, &io_stack->Parameters.Write.ByteOffset, NULL ); decrypt(pBuf,Len); break; |
|
板凳#
发布于:2003-07-09 23:32
最好不要让数据长度有变化。
|
|
地板#
发布于:2003-07-10 09:35
else老兄,谢谢你的回复,加密时我并没在原始数据上处理而是分配了另外的内存,
CurrentAddress = MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority); buf=ExAllocatePool(NonPagedPool,io_stack->Parameters.Write.Length); RtlCopyMemory(buf,CurrentAddress,io_stack->Parameters.Write.Length); 应该不存在对该内存解密的问题。加密时我用简单的取反操作都正常。 另外分组加密算法不可能不改变数据的长度呀! |
|
地下室#
发布于:2003-07-15 10:46
不知道分组算法的密钥如何传递给FILEDISK的驱动程序。
|
|