-
-
[求助]win2k3 x64 SSDT函数地址?求内核大牛解惑
-
发表于:
2016-2-5 18:00
3972
-
[求助]win2k3 x64 SSDT函数地址?求内核大牛解惑
win7 x64 SSDT 偏移计算公式是
SSDT基址+表项值>>4
2003 x64呢?
在网上看说2003上偏移的计算是
SSDT基址+表项值&0xFFFFFFF0
win7 x64下我的计算方法如下
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;
if (!SSDTbase)
{
return 0;
}
#ifdef _WIN64
return [COLOR="Red"](PVOID)(((SSDT->pServiceTable[SsdtIndex] >> 4) + SSDTbase);[/COLOR]
#else
return (PVOID)SSDT->pServiceTable[SsdtIndex];
#endif
}
win7 x64的计算结果没问题,但是2003 64位结果怎么都不对
求大牛指点?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)