64位vista,win7中KeServiceDescriptorTable问题

驱动开发笔记3—SSDT表详解 SSDT表 SSDT的全称是"System Services Descriptor Table",即系统服务描述表,在内核中的实际名称是KeServiceDescriptorTable,这个表由ntoskrnl.exe导出(在x64里不导出)。 SSDT用于处理应用层通过Kernel32.dll下发的各个API操作请求。ntdll.dll中的API是一个简单的包装函数,当Kernel32.dll中的API通过Ntdll.dll时,会先完成对参数的检查,再调用一个中断(int 2Eh 或者 SysEnter指 阅读详情

     最近在移植64位驱动,原本在32位驱动中使用到了KeServiceDescTable进行SSDT Hook等。但是在64位系统上是不允许进行SSDT HOOk的。在64位的XP系统上,使用到这个导出符号式没有问题的。但是在64位Vista和Win7下面,如果使用了这个符号,那么你在加载驱动的时候,返回的错误是找到不指定文件。在修这个bug真是有点吃力,只能一点点个跟进去,还好手边有WRK,要不然就完蛋了。首先说说加载驱动的过程吧,首先由应用层启动服务,之后会调用nt中的NtloadDriver,进去之后调用了IopLoadUnloadDriver(驱动卸载也是调用这个,只是参数改为FALSE),最好调用了IopLoadDriver进行。在这个函数中才是真正的加载驱动,包括加载镜像文件,检查导入表,修改重定位表等。具体的还是要看WRK的代码了。WRK虽然不是具体操作系统的原始代码,但是整个框架是有的。

    不说这个了,跟到IopLoadDriver之后,通过错误信息,还以为是镜像文件不存在导致的呢。后来发现在进行检查导入表的时候返回失败了。但是导入表中的函数实在是太多了,单步调就太痛苦了。在返回错误的时,下单点,查看当前检测的符号名,基本上确定是由KeServiceDescriptionTable导致的了。之后,专门写了专门用来检查导入表符号的小工具,真是有点累。这个工具主要的功能就是静态分析PE文件的导入表,挨个对导入表中的符号,去导入文件的导出表中去搜索。搜索的代码基本上用的是WRK中的代码。奇怪的是,在ntoskrnl.exe中有导出这个符号的。于是我在次调试分析加载过程。使用条件断点,很快确定是这个符号的文件。之后把驱动中使用到KeServiceDescriptionTable驱动。果然不出所料,驱动可以加载起来了。O(∩_∩)O哈哈~
     总结一下,这个符号虽然是有导出的,但是我们不可以使用。这个可能就是为了防止SSDT hook的时候来着吧。

驱动过游戏保护基础知识点 A、引用KeServiceDescriptorTable表 B、通过ServiceTableBase+偏移读出当前函数地址 C、用windbg测试读取的值 系统服务描述符表 在ntoskrnl.exe导出KeServiceDescriptorTable 这个表 typedef struct _ServiceDescriptorTable { PVOID ServiceTableBase; //System Service Dispatch Table 的基地址 阅读详情

相关推荐

进程隐藏学习总结

怎么隐藏进程 工具/原料 HideToolz 步骤/方法 1 在百度上面搜索HideToolz ,打开第一个搜索结果,点击进入下载。把HideToolz 下载到你的电脑里面。 2 鼠标双击打开该压缩包,再直接双击该软件即可打开该软件了。并且在软件里面可以看见目前的进程数为多少个。 3 按Ctrl + Alt + . 【启动任务管理器】,在 HideTool

bcbobo21cn的专栏 5285

SSDT hook技术中KeServiceDescriptorTable 结构及获取

KeServiceDescriptorTable 结构  KeServiceDescriptorTable:是由内核(Ntoskrnl.exe)导出的一个表,这个表是访问SSDT的关键,具体结构是    typedef struct ServiceDescriptorTable {    PVOID ServiceTableBase;    PVOID ServiceCounterTabl

namelcx的专栏 2302

解决 `version ‘GLIBCXX_3.4.32‘ not found‘ not found` 错误

解决 `version 'GLIBCXX_3.4.32' not found' not found` 错误

engchina的专栏 5677

Win10 x64 KeServiceDescriptorTable SSDT 偏移计算理解

Win10 x64 KeServiceDescriptorTable SSDT 偏移计算理解引言站在巨人的肩膀上实现代码通用的偏移计算方法 引言 很久没写博客了,水个博客,KeServiceDescriptorTable 和 KeServiceDescriptorTableShadow的原理我就不写了,百度很多,主要这篇写如何定位x64下未导出的KeServiceDescriptorTable。 站在巨人的肩膀上 前辈们在之前已经找到了一个计算公式,通过读取msr寄存器的0xC0000082读取到

Doub1's Blog 2279

基于Python的微信聊天记录分析——数据获取

本篇为“基于Python的微信聊天记录分析”第一篇,主要涉及数据获取,包括Python环境配置、WeChatMsg项目配置和运行、获取聊天记录等内容,流程简单、比较基础,后续这个系列会涉及基于Python的数据处理、统计分析、NLP技术等内容。希望和大家多多交流,共同进步!

Henryli1202的博客 1万+

ESP32开发环境与微信小程序通信的完整示例

通过搭建稳定的esp32开发环境,实现其与微信小程序间的双向通信,涵盖Wi-Fi连接、数据收发与协议设计,为物联网应用提供低成本解决方案。

weixin_42126677的博客 1133

未解析符号 KeServiceDescriptorTable

是一个未导出的符号,无法直接用于Windows7x64系统中。尤其是在x64架构上,微软加强了对内核模式代码的安全性和稳定性限制,例如。因此直接修改和访问SSDT(系统服务描述符表)是被严格限制的操作。下面是针对你的需求给出的解决方案。,通过合法手段或间接方式实现目标。

lydstory123的专栏 228

GD32F303定时器配置:实现两路互补PWM输出与相位控制

本文详细解析了基于GD32F303定时器实现两路互补PWM输出与精确相位控制的方法。通过配置TIMER2的中间对齐模式,结合REMAP功能解决引脚复用问题,从硬件层面稳定生成相位差180度的互补PWM信号,适用于电机驱动、开关电源等对时序要求苛刻的应用场景。

weixin_29182481的博客 307

编译器报错: error LNK2001: unresolved external symbol "struct _ServiceDescriptorTable * KeServiceDescript...

转自VC错误:http://www.vcerror.com/?p=10 问题描述: 编译器报错: error LNK2001: unresolved external symbol “struct _ServiceDescriptorTable * KeServiceDescriptorTable” (?KeServiceDescriptorTable@@3PAU_Servic...

weixin_33947521的博客 305

RK3568平台(电源篇)电源域IO配置

在kernel之前需要修改电源域,主控电源域的IO电平要与对接外设芯片的IO电平匹配,还要注意软件的电压配置要跟硬件的电压一致,否则,最坏的情况可能会导致IO的损坏。其实就是管理 IO 输出的电平;假如硬件上 IO 电源域配置为 3.3V,则 IO 输出最大电平为 3.3V;同理 IO 电源域硬件配置为 1.8V,则 IO 输出最大电平是 1.8V;这样有利于 IO 电平的灵活配置;

weixin_49303682的博客 3479

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1501

KeServiceDescriptorTable64获取

1 ULONGLONG GetKeServiceDescriptorTable64() //我的方法 { PUCHAR StartSearchAddress = (PUCHAR)__readmsr(0xC0000082); PUCHAR EndSearchAddress = StartSearchAddress + 0x500; PUCHAR i = NULL; U...

weixin_34368949的博客 1004

国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题2(含答案)

国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) ...

无名何许人的博客 1万+

X64系统下的KeServiceDescriptionTable

    最近在搞64位系统驱动,虽然在64位系统上不能在进行SSDT等Hook了。但是需要用到KeServiceDescriptorTable中的东西。用Windbg发现64下KeServiceDescriptionTable结构虽然是相似的,但是要获取index中的函数地址却不一样。u一样,完全不是什么函数地址。是一些很怪的数,刚开始有些怀疑是不是搞错了,于是转到32位下面按照查看服务的方式看了

Tommy(凌飞)的专栏 3390

几种常见的Web攻击

几种常见的Web攻击 文章目录几种常见的Web攻击一、DoS攻击1.SYN洪水攻击2.IP欺骗3.Land攻击4.针对DoS攻击的防御二、CSRF攻击1. CSRF攻击的发生有三个必要条件:2.几种防护方法:三、XSS漏洞攻击1.非持久型XSS漏洞2.持久型XSS漏洞四、SQL注入1.SQL注入的危害2.SQL注入的方式3.防止SQL注入的解决方案 一、DoS攻击 DoS(Denial of Service),拒绝服务,顾名思义这种攻击是为了让服务器无法提供正常服务,最常见的DoS攻击是网络带宽攻击和连

wolfGuiDao的博客 1259

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RMB系统调用4、SSDT

一、回顾 前两篇博客,我逆向分析了 KiSystemService 和 KiFastCallEntry 填充_KTRAP_FRAME 结构体的代码,二者大同小异,主要的区别是 sysenter 只改了eip,cs,ss,虽然esp也改了,但是windows不使用,而是从TSS里取esp0;另外sysenter并没有像中断门那样压栈,所以3环的 ss, esp, eflags, cs,eip都要在函数里依次保存到 _KTRAP_FRAME 。 这次课后作业是逆向 KiSystemService / KiFas

Windows内核学习笔记 371

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

KeServiceDescriptorTable

操作系统:win10 21h1 19043.1237。

luduxin001的博客 510

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

系统服务描述符表

   大家都知道在WINNT 的内核中存在着两个变量,KeServiceDescriptorTable,KeServiceDescriptorTableShadow,我们可以使用KD 看到。kd> dd nt!KeServiceDescriptorTable8046e0c0  804746e8 00000000 000000f8 80474acc8046e0d0  00000000 0000000

CPPLOVER_78的专栏 6051

关于windbg不能正确显示KeServiceDescriptorTableShadow的问题

参考了一下网上的文档,其实就是符号的问题 可以在symbol path里加入 srv*E:\WinDDK*http://msdl.microsoft.com/download/symbols E:\\WinDDK 是你的符号表要保存的硬盘路径 在windbg命令行下输入: kd>  !sym noisy          //命令希望WinDBG在获得符号的时候取得更多的信息 kd> 

u011019337的专栏 1062

城里城外看SSDT

原文链接:http://www.titilima.cn/?action=show&id=201点这里下载本文的配套代码引子2006年,中国互联网上的斗争硝烟弥漫。这时的战场上,先前颇为流行的窗口挂钩、API挂钩、进程注入等技术已然成为昨日黄花,大有逐渐淡出之势;取而代之的,则是更狠毒、更为赤裸裸的词汇:驱动、隐藏进程、Rootkit……前不久,我不经意翻出自己2005年9月写下

马说@优快云 6272

Windows2000 内核级进程隐藏、侦测技术

摘要    信息对抗是目前计算机发展的一个重要的方向,为了更好的防御,必须去深入的了解敌人进攻的招式。信息对抗促使信息技术飞速的发展。下面我选取了信息对抗技术的中一个很小一角关于windows内核级病毒隐藏技术和反病毒侦测技术作为议题详细讨论。 关键字:内核,拦截,活动进程链表,系统服务派遣表,线程调度链Abstract        Nowadays, informati

天蓝的专栏 1776

使用Windbg查看系统SSDT表与ShadowSSDT表

x86操作系统 1. 查看当前系统是否已经载入win2k.sys的相关符号信息: kd> lm start end module name 80586000 8058f000 kdcom (deferred) 80e03000 81391000 nt (pdb symbols) d:\symb

baggiowangyu的专栏 7116

问题解决:无法解析的外部符号 _imp_XXXXXXXXX

问题解决--无法解析的外部符号 _imp_XXXXXXXXX 错误示例: 出现字符_imp,说明不是真正的静态库,而是某个动态库的导入库,导入函数和自己不同名,所以加了字符_imp。比如说_imp_GetUserNameA就是GetUserNameA函数。 会报这种错误的原因: 1、说明注册表函数没有相关的lib库,我们需要在MSDN下搜索函数。 2、如果有引入三方库文件,可能存在...

HideInTime的博客 2万+

编译链接过程中出现“无法解析的外部符号”,原因及解决办法总结

1、错误为:error LNK2019: 无法解析的外部符号 ___report_rangecheckfailure,该符号在函数 _OBJ_create_objects 中被引用 原因:__report_rangecheckfailure是用来检查堆栈缓存溢出的,如果编译的时候打开GS(project property--》Configuration properties--》c/c++......

fanzirong_的博客 12万+

win7 x64中寻找SSDT

win32位的SSDT表是导出的,根本不用找.但x64的就不导出了 win7x64下: 要得到SSDT的地址,首先找到KiSystemCall64的地址,在它的下面就有SSDT的线索 找的KiSystemCall64只需要读出MSR(特别模块寄存器)c0000082的值,便是KiSystemCall64的地址: 以下使用Windbg调试: 3: kd> rdmsr c0000...

吾无法无天的博客 1460
上一篇: 64位系统应用层获取peb
下一篇: 基础驱动和设备对象关系
less@more
博客等级 码龄21年 181粉丝 162原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值