阅读:1624回复:1
求助:基于filedisk数据流的加解密问题
实现目的:对filedisk虚拟出的磁盘写入数据加一。
源代码如下: case IRP_MJ_WRITE: 。。。。。。。。。。。。。。 ///////////////开始加密///////////////////// buffertest = (PUCHAR) ExAllocatePool(PagedPool, io_stack->Parameters.Read.Length); memcpy(buffertest, (PUCHAR)MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority), io_stack->Parameters.Read.Length); tarray=buffertest; for(i=0;i<io_stack->Parameters.Read.Length;i++) { tarray=tarray+1; } RtlCopyMemory((PUCHAR)MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority),tarray,io_stack->Parameters.Read.Length); ZwWriteFile( device_extension->file_handle, NULL, NULL, NULL, &irp->IoStatus, (PUCHAR)MmGetSystemAddressForMdlSafe(irp->MdlAddress, NormalPagePriority), io_stack->Parameters.Write.Length, &io_stack->Parameters.Write.ByteOffset, NULL ); 改了之后,打开虚拟磁盘,新建文本文件,写入保存。就会出现很多乱七八糟的文件。写入的数字也没加一。如果把io_stack->Parameters.Read.Length改成8,就不会出现上述情况,写入数据后自动加了一。不过会生成一个.com文件,文件名也是乱码。 请教各位大侠,到底什么哪个地方出了问题? 是否MDL中还带有文件的信息,并不单纯是数据,是不是应该修改Mdladress->StartVa? |
|
沙发#
发布于:2009-10-28 20:04
修改Mdladress->StartVa试一下
|
|