[系统底层] x86和x64下ssdt的差别

番茄系统家园 · 2021-08-14 23:50:13

[系统底层] x86和x64下ssdt的差别

X86和x64下ssdt的差别函数

首先介绍一下SSDT相关的结构体指针

无类型指针,x86下32位,x64下64位blog

结构体索引

{ip

;im

;call

;d3

;数据

},*;db

看一下对应关系

在XP32位下

位下

红黄蓝绿分别代码结构体中的四个成员。第三项为函数个数

这里用dp命令,以指针大小显示数据

dpKeServiceDescriptorTable

XP下

直接是函数的地址

Win7下

计算公式以下:

Ssdt为KeServiceDescriptorTable地址,Index为索引值

FunAddr=ssdt+(ssdt+4*Index)4

以ntdll!NtOpenProcess为例计算验证一下

ntdll!NtOpenProcess索引值为23h

Ufntdll!NtOpenProcess以下:

ntdll!ZwOpenProcess:

00000000`76df15104c8bd1movr10,rcx

00000000`76df1513b****moveax,23h

00000000`76df15180f05syscall

00000000`76df151ac3ret

索引值为23h,ssdt地址为fffff800`03ecd800

fffff800`03ecd800+4*23h=fffff800`03ECD88C

fffff800`03ECD88C地址处的值为02d0bd00

右移四位002d0bd0

加上基址fffff800`03ecd800+002d0bd0=fffff800`0419E3D0

看一下ufffff800`0419E3D0

确实是内核函数NtOpenProcess的地址。

总之,x86下的ssdt中的内核函数地址能够直接得到,x64下须要进行计算。

相关阅读

  • win7 x64中寻找win7 64 ssdtssdt
  • windows 10 操作系统、电脑、应用程序等
  • [系统底层] x86和x64下ssdt的差别
  • 免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/33648.html。
    猜你喜欢
    最新应用
    热门应用