typedef struct _SSDTStruct
{
LONG* pServiceTable;
PVOID pCounterTable;
#ifdef _WIN64
ULONGLONG NumberOfServices;
#else
ULONG NumberOfServices;
#endif
PCHAR pArgumentTable;
}SSDTStruct,pSSDTStruct;
PVOID SSDT::GetFunctionAddress(const char* apiname,int SsdtIndex)
//read
address from SSDT
pSSDTStruct SSDT = (pSSDTStruct)GetKeServiceDescriptorTable64();
if
(!SSDT)
return
0;
}
ULONG_PTR SSDTbase = (ULONG_PTR)SSDT->pServiceTable;
(!SSDTbase)
[COLOR=
"Red"
](PVOID)(((SSDT->pServiceTable[SsdtIndex] >> 4) + SSDTbase);[
/COLOR
]
(PVOID)SSDT->pServiceTable[SsdtIndex];
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课