看流星社区

 找回密码
 注册账号
查看: 2010|回复: 0

逆WIN7X64内核调试之NTCreateDebugObject

[复制链接]

该用户从未签到

发表于 2017-6-3 11:03:44 | 显示全部楼层 |阅读模式
NTSTATUS __fastcall proxyNtCreateDebugObject(
    OUT PHANDLE DebugObjectHandle,
    IN ACCESS_MASK DesiredAccess,
    IN POBJECT_ATTRIBUTES ObjectAttributes,
    IN ULONG Flags
    )
{
    NTSTATUS status;
    HANDLE Handle;
    PDEBUG_OBJECT DebugObject;
    KPROCESSOR_MODE    PreviousMode;

    PreviousMode = ExGetPreviousMode();

    //判断用户层句柄地址是否合法
    try {
        if (PreviousMode != KernelMode) {
        ProbeForWriteHandle (DebugObjectHandle);
            *DebugObjectHandle = *DebugObjectHandle;
        }
        *DebugObjectHandle = NULL;

    } except(ExSystemExceptionFilter()) {
        return GetExceptionCode();
    }

    if (Flags & ~DEBUG_KILL_ON_CLOSE) {
        return STATUS_INVALID_PARAMETER;
    }

    //创建调试对象
    status = ObCreateObject(
        PreviousMode,
        NewDbgObject,    //调试对象类型,后面我们要换成我们新建的调试对象类型
        ObjectAttributes,
        PreviousMode,
        NULL,
        sizeof(DEBUG_OBJECT),
        0,
        0,
        (PVOID*)&DebugObject);

    if (!NT_SUCCESS(status)) {
        return status;
    }
    //初始化调试对象
    ExInitializeFastMutex(&DebugObject->Mutex);
    InitializeListHead(&DebugObject->EventList);
    KeInitializeEvent(&DebugObject->EventsPresent, NotificationEvent, FALSE);

    if (Flags & DEBUG_KILL_ON_CLOSE) {
        DebugObject->Flags = DEBUG_OBJECT_KILL_ON_CLOSE;
    }
    else {
        DebugObject->Flags = 0;
    }

    //调试对象插入句柄表
    status = ObInsertObject(
        DebugObject,
        NULL,
        DesiredAccess,
        0,
        NULL,
        &Handle);
    if (!NT_SUCCESS(status)) {
        return status;
    }

    try {
        *DebugObjectHandle = Handle;
    } except(ExSystemExceptionFilter()) {
        status = GetExceptionCode();
    }

    return status;
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 11:59

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表