NTFS FSD HOOK

来源:互联网 发布:超牛手机数据恢复官网 编辑:程序博客网 时间:2024/06/06 12:42

NTFS FSD HOOK

NTSTATUS FSDHookControl( IN BOOLEAN IsHook ){    NTSTATUS status = STATUS_SUCCESS;    UNICODE_STRING uNTFS = {0};    PDRIVER_OBJECT NTFS = NULL;    RtlInitUnicodeString( &uNTFS, L"\\FileSystem\\Ntfs" );    status = ObReferenceObjectByName(   &uNTFS,                                         OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,                                        NULL,                                        0,                                        *IoDriverObjectType,                                        KernelMode,                                        NULL,                                        &NTFS);    if ( ! NT_SUCCESS( status ) )        return status;    if( IsHook )        NtfsCreateDispatch = InterlockedExchangePointer(                                    &NTFS->MajorFunction[ IRP_MJ_CREATE ],                                    NtfsCreateDispatchHook );    if( ! IsHook && MmIsAddressValid( NtfsCreateDispatch ) )        InterlockedExchangePointer( &NTFS->MajorFunction[ IRP_MJ_CREATE ],                                    NtfsCreateDispatch );    status = ObDereferenceObject( NTFS );    return status;}
0 0
原创粉丝点击