阅读:1260回复:6
紧急求助,修改filemon出现了问题
我想将写操作写的数据截获下来,写到另外一个文件中,所以修改了
FilemonHookRoutine, 在case IRP_MJ_WRITE:那加了以下代码 NTSTATUS status; OBJECT_ATTRIBUTES oa; IO_STATUS_BLOCK iostatus; HANDLE hfile; // the output from this process UNICODE_STRING pathname; // you\'ve been given this PVOID buffer; ULONG bufsize; RtlInitUnicodeString(&pathname, L\"\\\\??\\\\C:\\\\log.txt\"); InitializeObjectAttributes(&oa, &pathname,OBJ_CASE_INSENSITIVE, NULL, NULL); status = ZwCreateFile(&hfile,GENERIC_WRITE,&oa,&iostatus,NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OVERWRITE_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); buffer = \"wwwwwwwwwwww\"; bufsize = 12; status = ZwWriteFile(hfile, NULL, NULL, NULL, &iostatus, buffer, bufsize, NULL, NULL); ZwClose(hfile); 以下是源代码 if( FilterDef.logwrites ) { hookCompletion = LogRecord( TRUE, &seqNum, &dateTime, NULL, \"%s\\tIRP_MJ_WRITE%c\\t%s\\tOffset: %d Length: %d\", name, (Irp->Flags & IRP_PAGING_IO) || (Irp->Flags & IRP_SYNCHRONOUS_PAGING_IO) ? \'*\' : \' \', fullPathName, currentIrpStack->Parameters.Write.ByteOffset.LowPart, currentIrpStack->Parameters.Write.Length ); } } break; 同样的代码,在xp+sp2的环境下根本就不生成log.txt,在windows 2003下生成文件了,但是内容写不进去,且关掉程序后就死机.请高手指教一下到底为什么?困惑了很久. |
|
沙发#
发布于:2005-04-30 12:31
不是重入了吧:)
|
|
板凳#
发布于:2005-04-30 17:41
重入是什么意思啊?
不好意思,我是刚入门的,能不能请你说清楚点啊?谢谢了 |
|
地板#
发布于:2005-05-01 09:16
你调用ZwWriteFile的时候,又会回到原来的地方,反复进去会有问题的.....
|
|
|
地下室#
发布于:2005-05-01 19:55
好象有道理哦,谢谢。
那我应该怎么做呢? 我就是想把写的数据截获下来并保存。 |
|
5楼#
发布于:2005-06-30 03:53
消除DEADLOCK的办法可以是在FILE IRP上加自己的标志,写FILE时候再判断一下就OK了;
|
|
6楼#
发布于:2005-06-30 11:40
紧急求助,修改filemon出现了问题: 你修改的FILEMON稳定么? 我这里总兰屏啊。 在装了SOFTICE的系统上,表现还OK。 |
|