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

VXD ifshook中怎样修改ioreq的数据 35分

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

补充一下:我是这样做的

如果是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,

最新喜欢:

ljmmaryljmmar...
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-04 13:02
这种方式加密后可能用户还能在资源管理器中看到文件目录结构??(我只是猜想,没试),不过我想拦截IOR_READT和IOR_WRITE来实现加密解密可能要好一些。
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
syx1991
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2009-09-04
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-07 17:12
谢谢,利用IOR_READ和IOR_WRITE是不是对磁盘进行加密,能对单个文件进行控制吗?
syx1991
驱动牛犊
驱动牛犊
  • 注册日期2002-03-12
  • 最后登录2009-09-04
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-08 19:21
有人做过吧?指点一下好吗
yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-26 09:17
我做的时候都是拷贝一份IRP,用拷贝下来的操作,最后把结果付给原来的就可以了
游客

返回顶部