NTFS FSD HOOK

NTFS FSD HOOK

说明:技术仅供学习使用,如恶意利用,与作者无关!

原理简介

还记得我们的DeviceIoControl的分发函数嘛?
在Windows下,所有的API都会经过某个驱动的某个MajorFunction.
我们只要更改这个MajorFunction的值,改成我们自己的实现,就可以实现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;
}

这时你只要声明一个NTSTATUS NtfsCreateDispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp,IN PVOID Context)的实现就可以了!


   转载规则

请联系作者付费转载。
 上一篇
KEYBOARD FSD HOOK KEYBOARD FSD HOOK
KEYBOARD FSD HOOK说明:技术仅供学习使用,如恶意利用,与作者无关!技术简介上一篇文章我们讲了NTFS FSD HOOK其实,它不只这些功能,他可以拦截键盘输入,拦截Create请求等等….其代码也十分模板化,只需要ObRef
2020-04-06
下一篇 
一些对学习WINDOWS内核编程有帮助的国外站点(不断更新) 一些对学习WINDOWS内核编程有帮助的国外站点(不断更新)
查资料:http://msdn.microsoft.com(谷歌搜索关键字,后加site:msdn.microsoft.com) 源码站:https://github.comhttp://www.codeproject.comhttp://
2020-04-01
  目录