Brain
驱动牛犊
驱动牛犊
  • 注册日期2003-01-11
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1610回复:3

vcmfc : 还是请教mj_read 的问题!

楼主#
更多 发布于:2003-01-21 19:58
上次回帖时你说过:

处理:

读取的字节一定要用Irp->IoStatus.Information,用Parameters.Read.Length,你会出事的。

1.Irp->AssociatedIrp.SystemBuffer
2.Irp->MdlAddress
3.Irp->UserBuffer
A.KernelMode处理
B.UserMode处理

能不能说具体点?
我的读文件测试,swf,txt都可以,但是powerpoint(*.ppt,*.pps)文件解密执行总是不对。我事先把一个ppt文件的头从offset=0开始改了16个字节,在读出数据时改回正确的ppt数据头,下断看也都执把数据修改了,但是打开ppt文件后就不能正常显示,是不是还有什么漏掉了?我这可是直接比较的读出数据啊!不能有遗漏吧?我手头没有什么资料,所以问的问题可能有些弱,不要笑话我,另能否推荐好的文件驱动资料?
 IoSetCompletionRoutine( Irp, myHookfun, (PVOID) (ULONG_PTR) seqNum, TRUE, TRUE, TRUE );

myHookfun中加入
if (Irp->MdlAddress)
{
try
   {
       pUserBuffer = MmGetSystemAddressForMdlSafe( Irp->MdlAddress,NormalPagePriority );
   }

   except(EXCEPTION_EXECUTE_HANDLER)
   {
      // return GetExceptionCode();
       goto go_1;
       
   }
}
else
{
pUserBuffer = Irp->UserBuffer;
try
   {
       ProbeForWrite(Irp->UserBuffer, IrpSp->Parameters.Read.Length , 4);
   }

   except(EXCEPTION_EXECUTE_HANDLER)
   {
      // return GetExceptionCode();
       goto go_1;
       
   }
try
   {
       ProbeForRead(Irp->UserBuffer, IrpSp->Parameters.Read.Length , 4);
   }

   except(EXCEPTION_EXECUTE_HANDLER)
   {
     //  return GetExceptionCode();
     goto go_1;
   }
}
if (pUserBuffer)
{

try
{
 str=(PCHAR) pUserBuffer;        
if (memcmp(str,&fhead,16)==0)
//fhead 是文件头信息
{           str[0]=0xd0;
str[1]=0xcf;
str[2]=0x11;
str[3]=0xe0;
}
      }
   except(EXCEPTION_EXECUTE_HANDLER)
   {
       return GetExceptionCode();
         }
}
}  

}

最新喜欢:

cyliucyliu
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-01-24 12:00
拿分来了,嘿嘿
Brain
驱动牛犊
驱动牛犊
  • 注册日期2003-01-11
  • 最后登录2007-06-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-24 16:17
呵呵,再次感谢!
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-30 11:49
sijun说的是对了,我的是错的,只处理NOCACHE irp.
游客

返回顶部