E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
驱动内核编程
windows
驱动内核编程
image.png搭建驱动开发环境sdk10wdk10win7平台降低警告级别8086CPU16位汇编1982年intel退出80286处理器,第一次提出保护模式在保护模式下,段寄存器存储的段基址,而是段选择子X86体系CPU支持三种模式实模式:兼容16位CPU的模式保护模式:操作系统所在模式虚拟8086模式:可以模拟多个8086执行多任务8086处理器的段寄存器是16位,共四个:CS,DS,ES
MagicalGuy
·
2023-12-03 02:43
Win64
驱动内核编程
-22.SHADOW SSDT HOOK(宋孖健)
SHADOWSSDTHOOKHOOK和UNHOOKSHADOWSSDT跟之前的HOOK/UNHOOKSSDT类似,区别是查找SSSDT的特征码,以及根据索引计算函数地址的公式,还有一个就是吧跳转函数写在什么位置,SSDT的时候是写在蓝屏函数里了。一、获得wKeServiceDescriptorTableShadow的地址这个跟获得KeServiceDescriptorTable差不多,唯一不同就是
TK13
·
2020-09-14 04:10
驱动内核编程
Win64
驱动内核编程
-28.枚举消息钩子
枚举消息钩子简单粘贴点百度的解释,科普下消息钩子:钩子是WINDOWS中消息处理机制的一个要点,通过安装各种钩子,应用程序能够设置相应的子例程来监视系统里的消息传递以及在这些消息到达目标窗口程序之前处理它们。钩子的种类很多,每种钩子可以截获并处理相应的消息,如键盘钩子可以截获键盘消息,鼠标钩子可以截获鼠标消息,外壳钩子可以截获启动和关闭应用程序的消息,日志钩子可以监视和记录输入事件。钩子的类型:(
TK13
·
2020-08-20 18:20
驱动内核编程
内核
枚举消息钩子
Win64
驱动内核编程
-30.枚举与删除线程回调
枚举与删除线程回调进程回调可以监视进程的创建和退出,这个在前面的章节已经总结过了。某些游戏保护的驱动喜欢用这个函数来监视有没有黑名单中的程序运行,如果运行则阻止运行或者把游戏退出。而线程回调则通常用来监控远程线程的建立,如果发现有远程线程注入到了游戏进程里,则马上把游戏退出。现在来详细讲解如何绕过这个两个监控。我们注册的进程回调,会存储在一个名为PspCreateProcessNotifyRout
TK13
·
2020-07-12 03:33
驱动内核编程
Win64
驱动内核编程
-33.枚举与删除对象回调
枚举与删除对象回调对象回调存储在对应对象结构体里,简单来说,就是存储在ObjectType.CallbackList这个双向链表里。但对象结构体在每个系统上都不一定相同。比如WIN7X64的结构体如下:ntdll!_OBJECT_TYPE+0x000TypeList:_LIST_ENTRY+0x010Name:_UNICODE_STRING+0x020DefaultObject:Ptr64Void
TK13
·
2020-07-12 03:33
驱动内核编程
Win64
驱动内核编程
-21.DKOM隐藏和保护进程
DKOM隐藏和保护进程主要就是操作链表,以及修改节点内容。DKOM隐藏进程和保护进程的本质是操作EPROCESS结构体,不同的系统用的时候注意查下相关定义,确定下偏移,下面的数据是以win764为例。关注两个成员:ActiveProcessLinks和Flag。ActiveProcessLinks把各个EPROCESS结构体连接成“双向链表”,ZwQuerySystemInformation枚举进
TK13
·
2020-07-12 03:33
驱动内核编程
驱动
DKOM隐藏和保护进程
断链隐藏进程
Win64
驱动内核编程
-27.强制读写受保护的内存
强制读写受保护的内存某些时候我们需要读写别的进程的内存,某些时候别的进程已经对自己的内存读写做了保护,这里说四个思路(两个R3的,两个R0的)。方案1(R3):直接修改别人内存最基本的也最简单的就是直接通过WriteProcessMemory和ReadProcessMemory对没有进行保护的程序的内存进行修改,一些单机游戏辅助什么的可能会有这种简单方式修改其他进程内存。方案2(R3):注入通过注
TK13
·
2020-07-12 03:33
驱动内核编程
Win64
驱动内核编程
-31.枚举与删除映像回调
枚举与删除映像回调映像回调可以拦截RING3和RING0的映像加载。某些游戏保护会用此来拦截黑名单中的驱动加载,比如XUETR、WIN64AST的驱动。同理,在反游戏保护的过程中,也可以拦截游戏驱动的加载。跟进程/线程回调类似,映像回调也存储在数组里。这个数组的“符号名”是PspLoadImageNotifyRoutine。我们可以在PsSetLoadImageNotifyRoutine中找到它:
TK13
·
2020-07-12 03:33
驱动内核编程
Win64
驱动内核编程
-15.回调监控注册表
回调监控注册表在WIN32平台上,监控注册表的手段通常是SSDTHOOK。不过用SSDTHOOK的方式监控注册表实在是太麻烦了,要HOOK一大堆函数,还要处理一些NT6系统有而NT5系统没有的函数。下面我就来介绍一种完胜SSDTHOOK监控注册表的方法,效果跟SSDTHOOK一样好。这个方法就是使用微软推荐的注册表监控函数:CmRegisterCallbak。此函数其实在XP系统上就有了,不过那时
TK13
·
2020-07-12 03:32
驱动内核编程
Win64
驱动内核编程
-11.回调监控进线程句柄操作
无HOOK监控进线程句柄操作在NT5平台下,要监控进线程句柄的操作。通常要挂钩三个API:NtOpenProcess、NtOpenThread、NtDuplicateObject。但是在VISTASP1以及之后的系统中,我们可以完全抛弃HOOK方案了,转而使用一个标准的API:ObRegisterCallbacks。下面做一个监视进线程句柄操作的程序,并实现保护名为CALC.EXE的进程不被结束。
TK13
·
2020-07-12 03:32
驱动内核编程
Win64
驱动内核编程
-14.回调监控文件
回调监控文件使用ObRegisterCallbacks实现保护进程,其实稍微PATCH下内核,这个函数还能实现文件操作监视。但可惜只能在WIN7X64上用。因为在WIN7X64上PATCH对象结构的成员(ObjectType->TypeInfo.SupportsObjectCallbacks)是合法的,在WIN8X64以及之后系统上会触发PATCHGUARD。但是经过实际测试,我手里的Win764
TK13
·
2020-07-12 03:32
驱动内核编程
Win64
驱动内核编程
-19.HOOK-SSDT
HOOKSSDT在WIN64上HOOKSSDT和UNHOOKSSDT在原理上跟WIN32没什么不同,甚至说HOOK和UNHOOK在本质上也没有不同,都是在指定的地址上填写一串数字而已(填写代理函数的地址时叫做HOOK,填写原始函数的地址时叫做UNHOOK)。不过实现起来还是很大不同的。一、HOOKSSDT要挂钩SSDT,必然要先得到ServiceTableBase的地址。和SSDT相关的两个结构体
TK13
·
2020-07-12 03:32
驱动内核编程
Win64
驱动内核编程
-12.回调监控进线程创建和退出
回调监控进线程创建和退出两个注册回调的函数:PsSetCreateProcessNotifyRoutine进程回调PsSetCreateThreadNotifyRoutine线程回调分别对应的回调函数类型:VOIDMyCreateProcessNotify(INHANDLEParentId,INHANDLEProcessId,INBOOLEANCreate){if(Create){DbgPrint
TK13
·
2020-07-12 03:32
驱动内核编程
Win64
驱动内核编程
-16.WFP网络监控驱动(防火墙)
WFP驱动监控网络WFP是微软推出来替代TDIHOOK、NDISHOOK等拦截网络通信的方案,WFP的框架非常庞大,在RING3和RING0各有一套类似的函数,令人兴奋的是,即使在R3使用WFP,也可以做到全局拦截访问网络。由于WFP的范围太广,实在难以一言概括,感兴趣的朋友可以自行到MSDN上查看微软对它的官方概述。本文的目的,是给大家理顺WFP的框架,并利用WFP拦截指定进程访问网络,或拦截对
TK13
·
2020-07-12 03:32
驱动内核编程
Win64
驱动内核编程
-33.枚举与删除对象回调
转载:http://www.voidcn.com/article/p-wulgeluy-bao.html枚举与删除对象回调对象回调存储在对应对象结构体里,简单来说,就是存储在ObjectType.CallbackList这个双向链表里。但对象结构体在每个系统上都不一定相同。比如WIN7X64的结构体如下:ntdll!_OBJECT_TYPE+0x000TypeList:_LIST_ENTRY+0x
aijia1857
·
2020-07-11 01:11
Win64
驱动内核编程
-13.回调监控模块加载
回调监控模块加载模块加载包括用户层模块(.DLL)和内核模块(.SYS)的加载。传统方法要监控这两者加在必须HOOK好几个函数,比如NtCreateSection和NtLoadDriver等,而且这些方法还不能监控未知的驱动加载方法。其实为了监控模块加载而HOOKAPI是非常傻的,因为微软已经提供了一对标准的API实现此功能。它们分别是PsSetLoadImageNotifyRoutine和PsR
TK13
·
2020-07-10 18:37
驱动内核编程
Win64
驱动内核编程
-2.基本框架(安装.通讯.HelloWorld)
驱动安装,通讯,HelloWorld开发驱动的简单流程是这样,开发驱动安装程序,开发驱动程序,然后安装程序(或者其他程序)通过通讯给驱动传命令,驱动接到之后进行解析并且执行,然后把执行结果返回。驱动程序HelloWorld之前总结了驱动环境的搭建,这里就直接继续之前搭建好的环境创建项目,打开vs2015创建一个驱动项目:写代码之前先配置下编译选项:然后添加一个项目文件main.c(注意后缀是.c,
TK13
·
2017-02-26 14:15
驱动内核编程
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他