阅读:1461回复:1
有人用xpifs中的sfilter做文件隐藏的么?
我在修改sfilter.用的是和大家一样的方法。在IRP_MN_QUERY_DIRECTORY处理例程中设 KEVENT waitEvent,KeInitializeEvent( &waitEvent, NotificationEvent, FALSE )后,IoSetCompletionRoutine(Irp, SfDRControlCompletion, &waitEvent, TRUE, TRUE, TRUE);
在SfDRControlCompletion中,KeSetEvent(event, IO_NO_INCREMENT, FALSE)。 在IRP_MN_QUERY_DIRECTORY处理例程中KeWaitForSingleObject(&waitEvent, Executive, KernelMode, FALSE, NULL),随后调用 HideSpecificFiles( Irp )。 VOID HideSpecificFiles( PIRP Irp ) { ULONG len; ULONG newlen; PFILE_BOTH_DIR_INFORMATION QueryBuffer = NULL; PFILE_BOTH_DIR_INFORMATION PreQueryBuffer = NULL; PIO_STACK_LOCATION currentIrpStack = NULL; ULONG offset = 0; currentIrpStack = IoGetCurrentIrpStackLocation(Irp); len = currentIrpStack->Parameters.QueryFile.Length; newlen = len; QueryBuffer = (PFILE_BOTH_DIR_INFORMATION) Irp->UserBuffer; PreQueryBuffer = QueryBuffer; if( !QueryBuffer ) return; if( QueryBuffer->NextEntryOffset > len ) return; if( QueryBuffer->NextEntryOffset == 0 ) return; /* do { offset = QueryBuffer->NextEntryOffset; //文件隐藏代码,目前未加入 QueryBuffer = (PFILE_BOTH_DIR_INFORMATION) ( (PUCHAR)QueryBuffer+offset ); }while( 0 != offset ); */ Irp->IoStatus.Information = newlen; } 我发现,如果把do...while注释掉,没有问题。 如果do.....while不注释掉,即使不加入文件隐藏代码的部分, 系统能启动,但是用户一旦登陆就会蓝屏。 出错类型是PAGE_FAULT_IN_NONPAGED_AREA(0x50) 不知道有没有人遇到过这种情况。 或者用xpifs中的sfilter做文件隐藏的仁兄们能不能介绍一下你们的情况。 先谢谢! [编辑 - 7/23/04 by failno] [编辑 - 7/23/04 by failno] |
|
最新喜欢:![]() |
沙发#
发布于:2004-07-27 10:50
问题已解决,
在调用HideFiles之前价格判断: if( NT_SUCCESS( Irp->IoStatus.Status ) ) { //Do something You Would Like Here! HideSpecificFiles( Irp ); //Done } else break; |
|