ssdt函数索引号_【转】SSDT索引号的获取
对于这个问题,困惑了许久,也许是应为很久没弄这个方面的东西了,曾经看过关于Native API 和 SSDT都忘得差不多了。吸取教训,今天把知识记录下来,并时常温故而知新。
系统服务描述符表,SystemService Dispatch Table,SSDT
KeServiceDescriptorTable是由内核导出的表。该表拥有一个指针(其实仅有ntoskrnel一项,没有包含win32k),指向SSDT中包含由Ntoskrnl.exe实现的核心系统服务的相应部分,它是内核的主要组成部分。
typedef struct _SystemServiceDescriptorTable
{
PVOID ServiceTableBase;
PULONG ServiceCounterTableBase;
ULONG NumberOfService;
ULONG ParamTableBase;
}SystemServiceDescriptorTable,*PSystemServiceDescriptorTable;
其中SSDT包含了所有内核导出函数的地址。每个地址长度为4个字节。所以要获得某个函数在SSDT中的偏移量,可以用:KeServiceDescriptorTable->ServiceTableBase + 函数ID* 4获取。
那么怎么获取函数ID呢?
其实很简单,ntoskrnl.exe导出的Zw*函数和Nt*函数,大家肯定都注意到了很多函数都是同名的,只是前缀不同。其实是这样的,Nt*函数是私有函数,其地址列于SSDT中。Zw*函数是由内核为使用设备驱动程序和其他内核组件而导出的函数,目的就在于同过Zw*函数去调用内核的Nt函数。(SSDT中的每一项和每个Zw*函数之间不存在一对一的对应关系)
内核中的所有Zw*函数都以操作码mov eax, ULONG起始,其中ULONG是系统调用在SSDT中的索引号。
说的具体点,就是每个Zw*号函数的第一行中的 ULONG值 就是其所对应的Nt*函数在SSDT中的索引号。
举个例子,如果我现在想获取 NtOpenProcess的ID号,那么就可以在Windbg中运行 u ZwOpenProcess
u ZwOpenProcess
nt!ZwOpenProcess:
805016c4 b87a000000 mov eax,7Ah805016c9 8d542404 lea edx,[esp+4]
805016cd 9c pushfd
805016ce 6a08 push 8
805016d0 e88c0d0400 call nt!KiSystemService (80542461)
805016d5 c21000 ret 10h
获取到的0x7A就是NtOpenProcess在SSDT中的ID号了。
ssdt函数索引号_【转】SSDT索引号的获取相关推荐
- mysql or走索引吗_加了索引,mysql查询就一定会用吗?
小白白跑去鹅厂面试,面试官提出了一个很实际的问题: mysql增加索引,那些情况会失效呢?谈一下实际工作中遇到的情况.我们的小白白又抛出了白氏秘籍:用不用索引,找DBA小姐姐!啊?这是你面试哈,还是D ...
- mysql group 索引失效_介绍mysql索引失效的情况
mysql视频教程栏目索引失效的情况. 索引对于MySQL而言,是非常重要的篇章.索引知识点也巨多,要想掌握透彻,需要逐个知识点一一击破,今天来先来聊聊哪些情况下会导致索引失效. 图片总结版 相关免费 ...
- mysql的覆盖索引原理_「Mysql索引原理(七)」覆盖索引
通常大家都会根据查询的WHERE条件来创建合适的索引,不过这只是索引优化的一个方面.设计优秀的索引应该考虑到整个查询,而不单单是WHERE条件部分.索引确实是一种查找数据的高效方式,但是MySQL也可 ...
- mysql设置索引长度_修改Mysql索引长度限制
mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...
- Mysql 唯一索引长度_关于mysql索引长度的相关内容总结
MySQL优化之-索引具体代码分析:索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型.根据存储引擎定义每个表的最大索引数和最大索引长度.所有存 ...
- datagridview选中获取行号_请问c# 的winform 怎么获取 datagridview选中的行数和列数啊...
展开全部 获取62616964757a686964616fe59b9ee7ad9431333431373332总行数:dataGridView1.Rows.Count; 获取当前选中行索引:int i ...
- ssdt函数索引号_【NT】一行代码获取SSDT服务索引号
注:本文是以32位的windows7为实例. 今天在研究SSDT的过程中看到了一个大神写的教程,其中还附了一些代码,代码主要讲解的是SSDT hook过程,我在他的代码中没有看到任何有关服务函数的索引 ...
- mysql索引失效_导致MySQL索引失效的几种常见写法
最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢SQL,导致MySQL的CPU资源飙升,基于此,给大家简单分享下这些比较使用的易于 ...
- like左匹配索引失效_导致MySQL索引失效的一些常见写法总结
前言 最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢SQL,导致MySQL的CPU资源飙升,基于此,给大家简单分享下这些比较使用 ...
- sql server 创建唯一性非聚集索引语句_数据库专题—索引原理
深入浅出数据库索引原理 参见:https://www.cnblogs.com/aspwebchh/p/6652855.html 1.为什么给表加上主键? 1.平时创建表的时候,都会给表加上主键.如果没 ...
最新文章
- android android:process=,Android app启动流程
- 跨域问题的前后端解决方案
- 售前笔记(四)——呈现沟通(PPT交流)
- C语言中低位存放,C语言 大端小端存储解析以及判断方法
- 【2021.01.01】人生中很重要的一个十年,差强人意
- 课时3.浏览器访问网页原理(理解)
- android arm 寄存器,ARM汇编
- vs使用未初始化的内存怎么解决_遇到C语言内存错误怎么办?一定要找准这六个原因...
- 刷题总结——湫湫系列故事——设计风景线(hdu4514 并差集判环+树的直径)
- find 命令_除了 find,还有这些文件查找命令
- Python数据分析处理库——Pandas
- 【GPS模组】移远EC20 基于Arduino的GPS流速仪
- NAT技术及NAT ALG
- 移动硬盘打不开,千万别轻易格式化
- 身份认证协议攻击:黑客不希望你了解的事情
- C#/.NET 系统优化专题(搜索引擎Lucene的使用)
- RealSense D435深度相机开发(一)---- 基础介绍
- 【软件应用】福昕pdf阅读器回退到上次阅读的位置
- kindle出现电池感叹号,充电黄灯亮,怎么解决?按AWZ客服的回复弄好了。
- 尊贤、谦虚、谨慎、交友、有恒、微渐、慎始终、因果
热门文章
- 84键键盘没有insert键
- OSChina 周五乱弹 ——妹子一不小心就被拖到小巷子里
- 怎么关闭苹果Mac桌面出现麦克风图案?
- [转载]程序员去面试的梗!面试官:“哦了,明天来上班吧”
- 会声会影2020试用版如何激活序列号正式版及快速零基础剪辑教程
- New Phy: 中科院城环所朱永官等综述全球变化对叶际微生物组的影响
- 创客思维在高等教育中的启迪作用
- PMP考试必备-常见翻译问题(三)
- 2022腾讯QQ春节红包活动 虎跃星辰玩法总攻略
- java抽象类重载_012 JAVA 抽象类、接口、String类的基础了解