-
-
[讨论]看某大侠的代码疑惑不解。见注释
-
发表于:
2012-3-23 21:19
2038
-
extern "C"
__declspec(dllimport) _stdcall KeAddSystemServiceTable(PVOID, PVOID, PVOID, PVOID, PVOID);
PServiceDescriptorTableEntry_t GetKeServiceDescriptorTableShadow(VOID)
{
PServiceDescriptorTableEntry_t ShadowTable = NULL;
ULONG ServiceTableAddress = 0;
PUCHAR cPtr = NULL;
for (cPtr = (PUCHAR)KeAddSystemServiceTable;cPtr < (PUCHAR)KeAddSystemServiceTable + PAGE_SIZE;cPtr += 1 )
{
if (!MmIsAddressValid(cPtr)) continue;
ServiceTableAddress = *(PULONG)cPtr;
if (!MmIsAddressValid((PVOID)ServiceTableAddress)) continue;
if (memcmp((PVOID)ServiceTableAddress, (PVOID)&KeServiceDescriptorTable, 16) == 0)
{
if ((PVOID)ServiceTableAddress == &KeServiceDescriptorTable) continue;
ShadowTable = (PServiceDescriptorTableEntry_t)ServiceTableAddress;
ShadowTable ++; //就是这一句:我觉得可能有问题?? 应该不要这一句??求大侠们指点。
return ShadowTable;
}
}
return NULL;
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课