首页
社区
课程
招聘
[已解决]为什么KeServiceDescriptorTable和KeServiceDescriptorTableShadow是一张表?
发表于: 2009-9-17 18:54 6132

[已解决]为什么KeServiceDescriptorTable和KeServiceDescriptorTableShadow是一张表?

2009-9-17 18:54
6132
80597795 83b8a03f558000  cmp     dword ptr nt!KeServiceDescriptorTable (80553fa0)[eax],0
8059779c 7551            jne     nt!KeAddSystemServiceTable+0x6b (805977ef)
8059779e 8d88603f5580    lea     ecx,nt!KeServiceDescriptorTableShadow (80553f60)[eax]

kd> dd 80553fa0
80553fa0  80502b8c 00000000 0000011c 80503000
kd> dd 80553f60
80553f60  80502b8c 00000000 0000011c 80503000

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
想找KeServiceDescriptorTableShadow
2009-9-17 19:03
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
3
两个表的内容都是在KiInitSystem里初始化的。wrk源码中的KiInitSystem函数内容;

VOID
KiInitSystem (
    VOID
    )

{
……
    //
    // Initialize the system service descriptor table.
    //

    KeServiceDescriptorTable[0].Base = &KiServiceTable[0];
    KeServiceDescriptorTable[0].Count = NULL;
    KeServiceDescriptorTable[0].Limit = KiServiceLimit;
    KeServiceDescriptorTable[0].Number = KiArgumentTable;
    for (Index = 1; Index < NUMBER_SERVICE_TABLES; Index += 1) {
        KeServiceDescriptorTable[Index].Limit = 0;
    }

    //
    // Copy the system service descriptor table to the shadow table
    // which is used to record the Win32 system services.
    //

    RtlCopyMemory(KeServiceDescriptorTableShadow,
                  KeServiceDescriptorTable,
                  sizeof(KeServiceDescriptorTable));

    return;
}

注意最后的RtlCopyMemory以及注释,你就应该清楚了。
2009-9-17 19:10
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那hook shadow ssdt 不是在这里找shadow的入口么
2009-9-17 19:20
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
5
你已经通过KeAddSystemServiceTable找到了KeServiceDescriptorTableShadow的位置了。
hook shadow ssdt指的其实是对KeServiceDescriptorTableShadow的第二张表,也就是win32k.sys的函数进行hook。

lkd> dd KeServiceDescriptorTableShadow
8055d6c0  80505460 00000000 0000011c 805058d4
8055d6d0  bf99a000 00000000 0000029b bf99ad10
8055d6e0  00000000 00000000 00000000 00000000
8055d6f0  00000000 00000000 00000000 00000000

要hook的是bf99a000开头的这张表
2009-9-17 19:27
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哈哈 非常感谢小聪 一时晕了
2009-9-17 19:34
0
游客
登录 | 注册 方可回帖
返回