【转】读取SSDT表和原函数地址

读取当前地址代码(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

本人新博客网址为:http://www.hizds.com
本博客注有“转”字样的为转载文章,其余为本人原创文章,转载请务必注明出处或保存此段。c++/lua/windows逆向交流群:69148232
原文地址:https://www.cnblogs.com/zhangdongsheng/p/2794952.html