2019独角兽企业重金招聘Python工程师标准>>>

X86和x64下ssdt的差异

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

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

结构体

typedef struct _SYSTEM_SERVICE_TABLE{

PVOID                  ServiceTableBase;

PVOID                  ServiceCounterTableBase;

ULONGLONG          NumberOfServices;

PVOID                  ParamTableBase;

} SYSTEM_SERVICE_TABLE, *PSYSTEM_SERVICE_TABLE;

看一下对应关系

在XP 32位下

WIN7 64位下

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

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

dp KeServiceDescriptorTable

XP下

直接是函数的地址

Win7下

计算公式如下:

Ssdt为KeServiceDescriptorTable地址,Index为索引值

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

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

ntdll!NtOpenProcess 索引值为23h

Uf ntdll!NtOpenProcess 如下:

ntdll!ZwOpenProcess:

00000000`76df1510 4c8bd1          mov     r10,rcx

00000000`76df1513 b823000000      mov     eax,23h

00000000`76df1518 0f05            syscall

00000000`76df151a c3              ret

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

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

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

右移四位 002d0bd0

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

看一下u fffff800`0419E3D0

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

总之,x86下的ssdt中的内核函数地址可以直接获得,x64下需要进行计算。

转载于:https://my.oschina.net/u/1777508/blog/1930801

[系统底层] x86和x64下ssdt的差异相关推荐

  1. 【C/C++】int,long和long long的区别;int 、long 占多少字节?VS 下int、long、long long占多少字节。X86和X64下的区别。

    先说理论 以前学的是long 在32位系统中4字节,64位系统中8字节.但是实际用的时候发现不是,现在总结一下: 对于long 来说: OS arch size Windows IA-32 4 byt ...

  2. python access violation_Python x64下ctypes动态链接库出现access violation的原因分析

    access violation error in Python x64 when using ctypes (caused by pointer) 问题描述 似乎这个问题仅存在于Windows下Py ...

  3. 如何检查Windows Vista , XP和2003系统是32位或64位( x86或x64 )版本

    您可能会收到一个电脑作为礼物,以及想要找出系统是否设置了一个32位或64位(微软标签,他们作为x86或x64 )为基础的作业系统,这需要特别建造的应用软件. ) . For computer or P ...

  4. Windows下x86和x64平台的Inline Hook介绍

    原文链接:https://blog.csdn.net/PeaZomboss/article/details/129095200?spm=1001.2014.3001.5501 前言 我在之前研究文明6 ...

  5. vs打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“Microsoft .NET Framework 4.7.2 (x86 和 x64)”项的文件

    错误内容: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必须将"Microsoft .NET Frame ...

  6. 技术员系统(x86/x64)装机版/纯净版 2017.06

    技术员系统(x86/x64)装机版/纯净版 2017.06 ■ 本系统采纳几十位经验丰富的装机人员经验和建议,系统稳定,快速,预装软件更加适合完美 ■ 系统精简适当(装机人员可以把光盘目录下的GHO. ...

  7. [Qt]VS2015下Qt项目的x86和x64版本编译

    原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:https://blog.csdn.net/humanking7/article/details/85883828 文章目录 @[toc] ...

  8. x86 和 x64平台下数据类型大小

    x86平台 x64平台 从以上测试可知,不管是x86平台还是x64平台,int类型大小都是32位4个字节 http://msdn.microsoft.com/en-us/library/aa38375 ...

  9. 深入iOS系统底层之CPU寄存器介绍

    一弹指六十刹那,一刹那九百生灭. --<仁王经> 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成.CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间 ...

最新文章

  1. 【算法】快速选择算法 ( 数组中找第 K 大元素 )
  2. 给GridView中的buttonField添加一个删除确认功能
  3. C# MemoryStream先写后读的奇怪现象
  4. mysql中decimal不能为空吗_程序员,知道Mysql中事务ACID的原理吗?
  5. 如何恢复被破坏的PowerDesigner pdm文件
  6. 计算机系统维护是学什么,《计算机系统维护》教学大纲.doc
  7. vue 一个页面多个router-view如何配置子路由_浅谈vue前端开发架构
  8. free bsd x修改UTC-SCT
  9. Python学习第四天
  10. html布局文字设置,div css布局中css中文字体设置
  11. 娱乐游戏及计算机动画论文,有关游戏美术设计论文
  12. 猴子摘桃c语言程序,猴子摘桃c语言
  13. 图像处理中的一阶偏导和二阶偏导
  14. 家有经济适用男牛仔很忙
  15. 亚马逊测评:最前沿养号系统,如何降低成本提高效率搭建稳定的ip环境
  16. 新版标准日本语初级_第三十七课
  17. Exiting on user Command
  18. 【数据挖掘】天池挑战赛 新闻推荐
  19. NVL和COALESCE的区别
  20. stm32 error A9555E

热门文章

  1. php代码function,ThinkPHP ~function()和function()方法和U方法
  2. 性能测试报告模板_性能测试规范之测试报告
  3. project项目管理案例_做总助,哪能不懂项目管理!
  4. Ubuntu安装MDK
  5. form表单获取多选的值
  6. rsync 未授权访问漏洞
  7. 【WXS】简要介绍说明
  8. 浏览器差异总结,可以用此判断浏览器版本(转)
  9. 兼容IE和FF的JS HTMLEncode和HTMLDecode的完整实例[转]
  10. Google引火烧身 还是致命一击