galaxay
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望129点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
阅读:985回复:3

为什么读出来的仍然是明文?

楼主#
更多 发布于:2007-01-25 21:06
SfRead里面如下处理:
if(Irp->Flags & (IRP_PAGING_IO || IRP_SYNCHRONOUS_PAGING_IO || IRP_NOCACHE))
{
            IoCopyCurrentIrpStackLocationToNext ( Irp );
            IoSetCompletionRoutine( Irp,
                                    SfReadCompletion,
                                    0,
                                    TRUE,
                                    TRUE,
                                    TRUE );
            return IoCallDriver( pMyExtension->NLExtHeader.AttachedToDeviceObject,  Irp );
}



SfRead的完成函数里面如下处理:

ReadLength = Irp->IoStatus.Information;

if( Irp->PendingReturned )
{
    IoMarkIrpPending( Irp );
}

if(Irp->MdlAddress)
    pdata = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority);
else
    pdata = Irp->UserBuffer;

tmpBuf = (PCHAR)ExAllocatePool( NonPagedPool, ReadLength);

RtlCopyMemory(tmpBuf, pdata, ReadLength);

Decrypt(tmpBuf);//解密

Irp->MdlAddress = NULL;

//build new MDL
PMDL pMdl=IoAllocateMdl( tmpBuf, ReadLength, FALSE, TRUE, Irp);
 
MmBuildMdlForNonPagedPool(pMdl);

Irp->MdlAddress=pMdl;

return Irp->IoStatus.Status;
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
沙发#
发布于:2007-01-25 21:09
Decrypt(tmpBuf);//解密

多莫明显,这不产生明文,难道说产生秘文?
没有战争就没有进步 X3工作组 为您提供最好的军火
galaxay
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望129点
  • 贡献值0点
  • 好评度129点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-01-26 00:16
谢谢斑竹,我表述有误!

读出的是秘文。 不知道为什么
hongpengtao
驱动小牛
驱动小牛
  • 注册日期2006-03-16
  • 最后登录2015-06-03
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望190点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-01-26 13:44
Cache 里面可能是密文件

在读的时候可能根本没去读read
而是
fastioread
游客

返回顶部