syx1991
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2009-09-04
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1101回复:1

VXD ifshook中怎样修改ioreq的数据

楼主#
更多 发布于:2004-06-02 19:42
我需要做文件加密操作,在read 时解密,在write时加密,我使用了
filemon。
怎样操作读写缓冲区,可不可以自己申请一个缓冲区来替代原有的缓冲区

syx1991
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2009-09-04
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-02 20:00
补充一下:我是这样做的

如果是read,并且是加密的文件
pData=pir->ir_data;
len=pir->ir_length;
nRetVal=(*PrevHookProc)(pfn,fn,Drive,ResType,CodePage,pir);
if(nRetVal==ERROR_SUCCESS)
{
for(;len>0;len--)
{
   *pData=*pData^0xff;//模拟加密
   pData++;
}
}
如果是write,并且需要加密
pOldData=pData=pir->ir_data;//缓冲区的数据加密
length=len=pir->ir_length;
for(;len>0;len--)
{
   *pData=*pData^0xff;//模拟加密
   pData++;
}
nRetVal=(*PrevHookProc)(pfn,fn,Drive,ResType,CodePage,pir);
for(;length>0;length--)//缓冲区的数据还原
{
   *pOldData=*pOldData^0xff;//模拟加密
   pOldData++;
}

测试时出现如下错误:
用wordpad存储一个大文件时,存储完毕,当关闭和wordpad时出现蓝屏,其错误分为两类:
1,无效的操作码
2,缺页中断错误,错误码为0006,
游客

返回顶部