阅读:1328回复:5
论坛里的各位老大,帮忙看看解密的问题(摆脱了)
if(!Irp->Flags & (IRP_NOCACHE | IRP_PAGING_IO |IRP_SYNCHRONOUS_PAGING_IO))
break; if(Irp->MdlAddress) { sysDataOld = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority); } else { sysDataOld = Irp->UserBuffer; } length = Irp->IoStatus.Information; sysDataBuffer = (PCHAR)ExAllocatePool(NonPagedPool, length); // shuffle the data for(i = 0; i<length ;i++) { sysDataBuffer = ~sysDataBuffer; } RtlCopyMemory(sysDataOld, sysDataBuffer, length); ExFreePool(sysDataBuffer); break; |
|
沙发#
发布于:2005-05-24 13:41
还没有搞定。
上次和你提到的错误,都改正了吗? 你这个代码,没头没尾的贴上来,别人就是想帮你,也是无从下手呀 |
|
板凳#
发布于:2005-05-24 14:37
我实现了加密,但是解密怎么也实现不了
我修改的Filemon里面的代码 case IRP_MJ_READ: if(!Irp->Flags & (IRP_NOCACHE | IRP_PAGING_IO |IRP_SYNCHRONOUS_PAGING_IO)) break; if(Irp->MdlAddress) { sysDataOld = MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority); } else { sysDataOld = Irp->UserBuffer; } length = Irp->IoStatus.Information; sysDataBuffer = (PCHAR)ExAllocatePool(NonPagedPool, length); // shuffle the data for(i = 0; i<length ;i++) { sysDataBuffer = ~sysDataBuffer; } RtlCopyMemory(sysDataOld, sysDataBuffer, length); ExFreePool(sysDataBuffer); break; |
|
地板#
发布于:2005-05-24 15:16
先把irp下发给文件系统处理,然后再解密sysDataOld中的内容,
你的irp还没有交给文件系统处理,里面的数据都没有,你对它解密还有什么用啊 |
|
地下室#
发布于:2005-05-24 15:30
是不是需要IoCallDriver( hookExt->FileSystem, Irp)
然后再进行解密啊?? |
|
5楼#
发布于:2005-05-24 18:20
不但要调IoCallDriver,而且要安装回调函数,在回调函数里实际读到数据后再进行解密
|
|