阅读:1101回复:1
VXD ifshook中怎样修改ioreq的数据
我需要做文件加密操作,在read 时解密,在write时加密,我使用了
filemon。 怎样操作读写缓冲区,可不可以自己申请一个缓冲区来替代原有的缓冲区 |
|
沙发#
发布于: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, |
|