阅读:862回复:3
使用FileObject写文件尾的问题,(请看下代码,帮分析一下)
BOOLEAN SfAddTailFalg( IN PDEVICE_OBJECT DeviceObject,
IN PFILE_OBJECT FileObject ) { PHOOK_EXTENSION hookExt = (PHOOK_EXTENSION)DeviceObject->DeviceExtension; IO_STATUS_BLOCK IoStatus = {0}; NTSTATUS Status; // PUCHAR Buffer; LARGE_INTEGER ByteOffset; // ULONG CurOffset =0; // BOOLEAN EndOfFile = FALSE; FILE_STANDARD_INFORMATION fsi; // IO_STATUS_BLOCK IoStatusBlock; UCHAR pBuff[4]={0}; if ( !FilemonQueryFile( DeviceObject, FileObject, FileStandardInformation, &fsi, sizeof(FILE_STANDARD_INFORMATION) ) ) { return FALSE; } //判断是否是加密文件 ByteOffset.QuadPart = fsi.EndOfFile.QuadPart -4 ; //尾部 Status = SfReadWriteSynchronously ( // DeviceObject, hookExt->FileSystem, FileObject, IRP_MJ_READ, &IoStatus, pBuff, 4, //sizeof(Buff), &ByteOffset, 0); if ( !NT_SUCCESS( Status ) ){ return FALSE; } DbgPrint("%s\n", "AddTailFlag"); return TRUE; } 这部分是读4个字节,可正确读出 |
|
|
沙发#
发布于:2007-11-05 10:17
BOOLEAN SfAddTailFalg( IN PDEVICE_OBJECT DeviceObject,
IN PFILE_OBJECT FileObject ) { PHOOK_EXTENSION hookExt = (PHOOK_EXTENSION)DeviceObject->DeviceExtension; IO_STATUS_BLOCK IoStatus = {0}; NTSTATUS Status; // PUCHAR Buffer; LARGE_INTEGER ByteOffset; // ULONG CurOffset =0; // BOOLEAN EndOfFile = FALSE; FILE_STANDARD_INFORMATION fsi; // IO_STATUS_BLOCK IoStatusBlock; UCHAR pBuff[4]={0}; if ( !FilemonQueryFile( DeviceObject, FileObject, FileStandardInformation, &fsi, sizeof(FILE_STANDARD_INFORMATION) ) ) { return FALSE; } //判断是否是加密文件 ByteOffset.QuadPart = fsi.EndOfFile.QuadPart -4 ; //尾部 Status = SfReadWriteSynchronously ( // DeviceObject, hookExt->FileSystem, FileObject, IRP_MJ_WRITE, &IoStatus, "Test", 4, //sizeof(Buff), &ByteOffset, 0); if ( !NT_SUCCESS( Status ) ){ return FALSE; } DbgPrint("%s\n", "AddTailFlag"); return TRUE; } //这个是写,这个会蓝,在SfReadWriteSynchronously函数中的 IoSetCompletionRoutine(Irp, &IrpCompletion, 0 , TRUE, TRUE, TRUE); Status = IoCallDriver(DeviceObject, Irp); //在这里蓝掉. 但这个写对写字板是可以的,在word中是不行? 我现在有两个问题,请大家帮忙看看: 1,上层用Read方式打开,在驱动层得到的FileObject,能否用于写标识? 2,在写标识时,以512byte写,是否是必须的,为什么写字板直接可以写上而word不行? |
|
|
板凳#
发布于:2007-11-05 11:06
![]() |
|
地板#
发布于:2007-11-05 12:42
反汇编别人的看一下, 就知道了, 而且一些函数的名称都跟人家的是一样的....
牛啊... |
|