首页
社区
课程
招聘
[原创] CE 句柄提权内核驱动源代码
发表于: 2026-6-1 20:49 2668

[原创] CE 句柄提权内核驱动源代码

2026-6-1 20:49
2668

22年的一个可以绕过CF检测的内核驱动提权代码,最近学习了一下

#include <ntifs.h>
#include <wdm.h>

// 全局变量
PVOID g_RegisterCallbackHandle = NULL;
HANDLE g_PromotePid = NULL;  // 这里需要填入Cheat Engine的进程ID

// 驱动卸载函数
VOID UnLoadDriver(PDRIVER_OBJECT pObj)
{
    if (NULL != g_RegisterCallbackHandle)
    {
        ObUnRegisterCallbacks(g_RegisterCallbackHandle);
        DbgPrintEx(0, 77, "[+] 回调已注销\n");
    }
    
    DbgPrintEx(0, 77, "[+] 驱动卸载成功\n");
    return;
}

// Ob预操作回调函数(核心提权逻辑)
OB_PREOP_CALLBACK_STATUS PobPreOperationCallback(
    PVOID RegistrationContext,
    POB_PRE_OPERATION_INFORMATION OperationInformation
)
{
    UNREFERENCED_PARAMETER(RegistrationContext);

    // 只处理来自CE进程的句柄请求
    if (g_PromotePid == PsGetCurrentProcessId())
    {
        DbgPrintEx(0, 77, "[+] 检测到CE进程发起句柄操作,正在提权\n");

        // 处理句柄创建操作(OpenProcess)
        if (OperationInformation->Operation == OB_OPERATION_HANDLE_CREATE)
        {
            OperationInformation->Parameters->CreateHandleInformation.DesiredAccess = PROCESS_ALL_ACCESS;
            DbgPrintEx(0, 77, "[+] 句柄创建权限已提升为PROCESS_ALL_ACCESS\n");
        }
        // 处理句柄复制操作(DuplicateHandle)
        else if (OperationInformation->Operation == OB_OPERATION_HANDLE_DUPLICATE)
        {
            OperationInformation->Parameters->DuplicateHandleInformation.DesiredAccess = PROCESS_ALL_ACCESS;
            DbgPrintEx(0, 77, "[+] 句柄复制权限已提升为PROCESS_ALL_ACCESS\n");
        }
    }

    return OB_PREOP_SUCCESS;
}

// LDR数据表格结构体(用于修改驱动标志)
struct _LDR_DATA_TABLE_ENTRY
{
    struct _LIST_ENTRY InLoadOrderLinks;         // 0x00
    struct _LIST_ENTRY InMemoryOrderLinks;       // 0x10
    struct _LIST_ENTRY InInitializationOrderLinks; // 0x20
    VOID* DllBase;                               // 0x30
    VOID* EntryPoint;                            // 0x38
    ULONG SizeOfImage;                           // 0x40
    struct _UNICODE_STRING FullDllName;          // 0x48
    struct _UNICODE_STRING BaseDllName;          // 0x58
    union
    {
        UCHAR FlagGroup[4];                      // 0x68
        ULONG Flags;                             // 0x68
        struct
        {
            ULONG PackagedBinary : 1;            // 0x68
            ULONG MarkedForRemoval : 1;          // 0x68
            ULONG ImageDll : 1;                  // 0x68
            ULONG LoadNotificationsSent : 1;     // 0x68
            ULONG TelemetryEntryProcessed : 1;   // 0x68
            ULONG ProcessStaticImport : 1;       // 0x68
            ULONG InLegacyLists : 1;             // 0x68
            ULONG InIndexes : 1;                 // 0x68
            ULONG ShimDll : 1;                   // 0x68
            ULONG InExceptionTable : 1;          // 0x68
            ULONG ReservedFlags1 : 2;            // 0x68
            ULONG LoadInProgress : 1;            // 0x68
            ULONG LoadConfigProcessed : 1;       // 0x68
            ULONG EntryProcessed : 1;            // 0x68
            ULONG ProtectDelayLoad : 1;          // 0x68
            ULONG ProcessAttachCalled : 1;       // 0x68
            ULONG ProcessAttachFailed : 1;       // 0x68
            ULONG CorDeferredValidate : 1;       // 0x68
            ULONG CorImage : 1;                  // 0x68
            ULONG DontRelocate : 1;              // 0x68
            ULONG CorILOnly : 1;                 // 0x68
            ULONG ChpeImage : 1;                 // 0x68
            ULONG ReservedFlags5 : 2;            // 0x68
            ULONG Redirected : 1;                // 0x68
            ULONG ReservedFlags6 : 2;            // 0x68
            ULONG CompatDatabaseProcessed : 1;   // 0x68
        };
    };
};

// 驱动入口函数
NTSTATUS DriverEntry(PDRIVER_OBJECT pObj, PUNICODE_STRING pReg)
{
    UNREFERENCED_PARAMETER(pReg);

    NTSTATUS ntStatus = STATUS_SUCCESS;
    pObj->DriverUnload = UnLoadDriver;

    // 关键:设置驱动标志,绕过MMP强制签名检查(仅测试模式有效)
    ((struct _LDR_DATA_TABLE_ENTRY*)pObj->DriverSection)->Flags |= 0x20;
    DbgPrintEx(0, 77, "[+] 驱动标志已修改\n");

    // 配置要监控的操作类型
    OB_OPERATION_REGISTRATION obOperationRegistration = { 0 };
    obOperationRegistration.ObjectType = PsProcessType;
    obOperationRegistration.Operations = OB_OPERATION_HANDLE_CREATE | OB_OPERATION_HANDLE_DUPLICATE;
    obOperationRegistration.PreOperation = PobPreOperationCallback;

    // 配置回调注册信息
    OB_CALLBACK_REGISTRATION obCallbackRegistration = { 0 };
    UNICODE_STRING ustrAltitude = RTL_CONSTANT_STRING(L"316666"); // 回调高度:越高越晚调用
    
    obCallbackRegistration.Version = ObGetFilterVersion();
    obCallbackRegistration.OperationRegistrationCount = 1;
    obCallbackRegistration.Altitude = ustrAltitude;
    obCallbackRegistration.OperationRegistration = &obOperationRegistration;

    // 注册Ob回调
    ntStatus = ObRegisterCallbacks(&obCallbackRegistration, &g_RegisterCallbackHandle);
    DbgPrintEx(0, 77, "[+] ObRegisterCallbacks 返回状态: 0x%X\n", ntStatus);

    if (NT_SUCCESS(ntStatus))
    {
        DbgPrintEx(0, 77, "[+] 回调注册成功!\n");
        DbgPrintEx(0, 77, "[!] 请将g_PromotePid设置为CE的进程ID\n");
    }
    else
    {
        DbgPrintEx(0, 77, "[-] 回调注册失败,错误码: 0x%X\n", ntStatus);
    }

    return ntStatus;
}

结果截图:




[招生]科锐逆向工程师培训(2026年7月3日实地,远程教学同时开班, 第56期)!

收藏
免费 0
打赏
分享
最新回复 (7)
雪    币: 4081
活跃值: (12812)
能力值: (RANK:385 )
在线值:
发帖
回帖
粉丝
2
f16K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6p5j5i4u0@1K9q4c8G2L8W2)9J5c8V1u0D9j5h3y4C8j5X3!0F1k6g2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4c8e0c8Q4b7U0W2Q4z5f1k6Q4c8e0k6Q4z5f1y4Q4z5o6W2Q4c8e0N6Q4z5f1u0Q4b7U0S2Q4c8e0g2Q4z5o6g2Q4b7U0y4Q4c8e0c8Q4b7V1u0Q4b7e0y4Q4c8e0N6Q4b7e0m8Q4z5o6q4Q4x3X3g2Q4c8e0k6Q4z5f1y4Q4z5o6W2Q4c8e0W2Q4z5f1y4Q4z5o6m8Q4c8e0S2Q4b7e0k6Q4z5o6q4Q4c8e0g2Q4b7f1c8Q4b7e0k6Q4c8e0c8Q4b7U0W2Q4b7e0m8Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0c8Q4b7U0W2Q4z5f1k6Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0c8Q4b7V1u0Q4b7e0g2Q4c8e0g2Q4b7f1c8Q4b7e0k6Q4c8e0c8Q4b7U0W2Q4b7e0m8Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0c8Q4b7V1u0Q4b7V1c8Q4c8e0c8Q4b7V1u0Q4b7e0y4Q4c8e0N6Q4b7e0m8Q4z5o6q4Q4x3X3f1`.
2026-6-2 09:48
0
雪    币: 12940
活跃值: (7267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2026-6-2 10:24
0
雪    币: 209
活跃值: (478)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
TkBinary 269K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6p5j5i4u0@1K9q4c8G2L8W2)9J5c8V1u0D9j5h3y4C8j5X3!0F1k6b7`.`. 也有相关代码.有需要学习的也可以学习下这份代码.
好的,感谢版主大大的分享(第一次收到版主的留言)
2026-6-7 23:09
0
雪    币: 209
活跃值: (478)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
chengdrgon 感谢分享
嗯嗯没事,有帮助就好
2026-6-7 23:09
0
雪    币: 410
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
这个现在还能使用吗
2026-6-9 00:37
0
雪    币: 209
活跃值: (478)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
啊你好哇123 这个现在还能使用吗
22年的,现在早就不能用了
2026-6-9 13:25
0
雪    币: 4081
活跃值: (12812)
能力值: (RANK:385 )
在线值:
发帖
回帖
粉丝
8
BOSC叛忍 好的,感谢版主大大的分享(第一次收到版主的留言)
共勉共勉.共同学习.
2026-6-17 16:14
0
游客
登录 | 注册 方可回帖
返回