读取当前地址代码(NtOpenProcess):
LONG *SSDT_Adr,t_addr,adr;
t_addr=(LONG)KeServiceDescriptorTable->ServiceTableBase;
SSDT_Adr=(PLONG)(t_addr+0x7a*4);
adr=*SSDT_Adr;
读取起源地址(NtOpenProcess):
UNICODE_STRING SysRoutineName;
LONG orgadr;
RtlInitUnicodeString(&SysRoutineName,L"NtOpenProcess");
orgadr=(LONG)MmGetSystemRoutineAddress(&SysRoutineName);
通过得到的地址 可以判断改函数是否被hook
自己读取的SSDT表:
SSDT 地址 | 起源地址.
NtOpenProcess->805751e0 | 805751e0