[系统底层] x86和x64下ssdt的差异
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的差异相关推荐
- 【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 ...
- python access violation_Python x64下ctypes动态链接库出现access violation的原因分析
access violation error in Python x64 when using ctypes (caused by pointer) 问题描述 似乎这个问题仅存在于Windows下Py ...
- 如何检查Windows Vista , XP和2003系统是32位或64位( x86或x64 )版本
您可能会收到一个电脑作为礼物,以及想要找出系统是否设置了一个32位或64位(微软标签,他们作为x86或x64 )为基础的作业系统,这需要特别建造的应用软件. ) . For computer or P ...
- Windows下x86和x64平台的Inline Hook介绍
原文链接:https://blog.csdn.net/PeaZomboss/article/details/129095200?spm=1001.2014.3001.5501 前言 我在之前研究文明6 ...
- vs打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“Microsoft .NET Framework 4.7.2 (x86 和 x64)”项的文件
错误内容: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必须将"Microsoft .NET Frame ...
- 技术员系统(x86/x64)装机版/纯净版 2017.06
技术员系统(x86/x64)装机版/纯净版 2017.06 ■ 本系统采纳几十位经验丰富的装机人员经验和建议,系统稳定,快速,预装软件更加适合完美 ■ 系统精简适当(装机人员可以把光盘目录下的GHO. ...
- [Qt]VS2015下Qt项目的x86和x64版本编译
原创文章,欢迎转载.转载请注明:转载自 祥的博客 原文链接:https://blog.csdn.net/humanking7/article/details/85883828 文章目录 @[toc] ...
- x86 和 x64平台下数据类型大小
x86平台 x64平台 从以上测试可知,不管是x86平台还是x64平台,int类型大小都是32位4个字节 http://msdn.microsoft.com/en-us/library/aa38375 ...
- 深入iOS系统底层之CPU寄存器介绍
一弹指六十刹那,一刹那九百生灭. --<仁王经> 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成.CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间 ...
最新文章
- 【算法】快速选择算法 ( 数组中找第 K 大元素 )
- 给GridView中的buttonField添加一个删除确认功能
- C# MemoryStream先写后读的奇怪现象
- mysql中decimal不能为空吗_程序员,知道Mysql中事务ACID的原理吗?
- 如何恢复被破坏的PowerDesigner pdm文件
- 计算机系统维护是学什么,《计算机系统维护》教学大纲.doc
- vue 一个页面多个router-view如何配置子路由_浅谈vue前端开发架构
- free bsd x修改UTC-SCT
- Python学习第四天
- html布局文字设置,div css布局中css中文字体设置
- 娱乐游戏及计算机动画论文,有关游戏美术设计论文
- 猴子摘桃c语言程序,猴子摘桃c语言
- 图像处理中的一阶偏导和二阶偏导
- 家有经济适用男牛仔很忙
- 亚马逊测评:最前沿养号系统,如何降低成本提高效率搭建稳定的ip环境
- 新版标准日本语初级_第三十七课
- Exiting on user Command
- 【数据挖掘】天池挑战赛 新闻推荐
- NVL和COALESCE的区别
- stm32 error A9555E