能力值:
( LV2,RANK:10 )
|
-
-
2 楼
想找KeServiceDescriptorTableShadow
|
能力值:
( 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以及注释,你就应该清楚了。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
那hook shadow ssdt 不是在这里找shadow的入口么
|
能力值:
( 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开头的这张表
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
哈哈 非常感谢小聪 一时晕了
|
|
|