- 博客(49)
- 资源 (3)
- 收藏
- 关注
原创 Windows驱动中使用数字签名验证控制设备访问权限
在一般的驱动开发时,创建了符号链接后在应用层就可以访问打开我们的设备并进行通讯。但我们有时候不希望非自己的进程访问我们的设备并进行交互,虽然可以使用 IoCreateDeviceSecure 来创建有安全描述符的设备,但大数的用户账户为了方便都是管理员,因此该方法不太完整。
2023-12-03 19:11:11 1333
原创 Windows驱动中校验数字签名(使用 ci.dll)
对于常规应用程序来说,在应用层可以使用 WinVerifyTrust, 在驱动层使用常规的 API无法使用,自己分析数据又太麻烦。但在内核中 ci.dll 包装了数据签名验证相关的功能,我们可以使用该 dll 来实现我们的数字签名验证。
2023-12-03 11:30:13 1495
原创 Windows ObjectType Hook 之 SecurityProcedure
Object Type Hook 是基于 Object Type的一种深入的 Hook,比起常用的 SSDT Hook 更为深入。有关 Object Type 的分析见文章。这里进行的 Hook 为 其中之一的 SecurityProcedure。文章实现进程打开的过滤。
2023-11-07 11:23:46 250
原创 Windows ObjectType Hook 之 OkayToCloseProcedure
Object Type Hook 是基于 Object Type的一种深入的 Hook,比起常用的 SSDT Hook 更为深入。有关 Object Type 的分析见文章。这里进行的 Hook 为 其中之一的 OkayToCloseProcedure。文章实现文件对象的过滤。
2023-11-05 11:08:23 381 1
原创 Windows ObjectType Hook 之 ParseProcedure
Object Type Hook 是基于 Object Type的一种深入的 Hook,比起常用的 SSDT Hook 更为深入。有关 Object Type 的分析见文章。这里进行的 Hook 为 其中之一的 ParseProcedure。文章实现注册表 Key 对象的过滤。
2023-11-02 11:19:33 480
原创 Windows ObjectType Hook 之 OpenProcedure
Object Type Hook 是基于 Object Type的一种深入的 Hook,比起常用的 SSDT Hook 更为深入。有关 Object Type 的分析见文章。这里进行的 Hook 为 其中之一的 OpenProcedure。文章分两部分,分别实现 Event 对象和 Process 对象的过滤。
2023-11-01 11:22:23 419
原创 KdMapper扩展实现之AVG(aswArPot.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-10-16 11:24:09 222
原创 KdMapper扩展实现之SOKNO S.R.L(speedfan.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-10-11 11:05:04 620
原创 KdMapper扩展实现之REALiX(hwinfo64a.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-10-10 16:10:15 212
原创 KdMapper扩展实现之Dell(pcdsrvc_x64.pkms)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-10-07 11:27:41 296
原创 KdMapper扩展实现之microstar(NTIOLIB_X64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-27 10:20:02 153
原创 KdMapper扩展实现之MICSYS(MsIo64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-26 19:17:01 345
原创 KdMapper扩展实现之LG(LHA.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-19 18:31:38 203
原创 KdMapper扩展实现之Huawei(Phymemx64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-14 20:48:03 288
原创 KdMapper扩展实现之GMER(gmer64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-12 11:26:05 390
原创 KdMapper扩展实现之CrystalMark(winring0x64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-09 12:04:32 290
原创 KdMapper扩展实现之CPUID(cpuz141.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-08 18:11:48 198
原创 KdMapper扩展实现之ATI(atillk64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-07 10:30:26 154
原创 KdMapper扩展实现之ASUS(GLCKIo.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-05 10:38:47 215
原创 KdMapper扩展实现之ASUS(EneIo64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-05 09:55:51 132
原创 KdMapper扩展实现之ASUS(asmmap64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-04 21:07:45 165
原创 KdMapper扩展实现之ASUS(ATSZIO64.sys)
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。
2023-09-04 17:32:26 199
原创 KdMapper被加载驱动的实现
内核映射器有较多年历史了,其中KdMapper是比较著名的,原版中它使用intel的驱动漏洞可以无痕的加载未经签名的驱动。本文章对被加载的驱动的实现进行简单的介绍。 正常情况下,驱动是被KdMapper加载到内存,然后解析导入函数后直接调用其入口函数,故其加载的驱动有以下要求: 入口函数的两个参数 PDRIVER_OBJECT 和 PUNICODE_STRING 不能使用,因为KdMapper在进行无痕加载时并未初始化这两个参数,所以一般情况下驱动代码如下: 如图: 调试加载的
2023-09-04 17:08:31 1414
原创 KdMapper扩展实现之虚拟地址转物理地址
KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考)做相应的修改以实现类似功能时遇到的问题,需要大家对KdMapper的代码有一定了解。在中有很多利用MmMapIoSpace和ZwMapViewOfSection将物理内存映射后进行内存数据读写的情况,一般情况下需要先将虚拟地址转换为物理地址,内核中使用MmGetPhysicalAddress即可。但有发现大多数的漏洞驱动并没有MmGetPhysicalAddress的利用。
2023-09-04 10:44:20 474 1
原创 KdMapper扩展中遇到的相关问题
这样就导致一个问题,MapDriver在将驱动文件写入内存中WriteMemory时,使用的物理内存映射的地址,虽是连续的,但实际的虚拟页面可能就只写了第一个,其它的页面没有真正写入数据,这样在调用驱动文件入口函数CallKernelFunction时就会出现,导致BSOD。可以看到加载指定的驱动文件时根据是否是mdl加载来分配内存,调用的是AllocatePool或者AllocMdlMemory,而这两个函数分配的都是内存虚拟地址是连续的,但物理内存是不连续的,在有些情况下会导致问题。
2023-09-03 16:51:37 760
原创 内核映射器(KernelMapper)开发-扩展KdMapper在Window 7 x64的支持
内核映射器有较多年历史了,其中KdMapper是比较著名的,原版中它使用intel的驱动漏洞可以无痕的加载未经签名的驱动。只不过当前只支持在Win10及Win11上运行,现在进行功能的修改以支持在Win7 x64环境上。当前假定读者对KdMapper的原理比较了解并编译调试过相关代码。
2023-07-22 11:47:36 1008
转载 【转载】利用签名驱动漏洞加载未签名驱动
设置电脑为测试模式加载驱动,某些游戏在该模式下不运行。自己写的驱动没有签名,系统不加载。自己写的驱动没有签名,系统不加载。
2023-06-14 15:49:00 1040
原创 Windows驱动开发学习记录-ObjectType Hook之ObjectType结构相关分析
其中用不着EPROCESS的结构,获取这个的地址是为了获取_OBJECT_HEADER的地址,在XP环境的代码中可以用以下来获取到_OBJECT_HEADER地址,因为_OBJECT_HEADER结构中的Body部分就是获取的对应的对象,如EPROCESS。在64位系统上 _OBJECT_HEADER中并没有字段直接包含_OBJECT_TYPE结构,而是一个索引,索引的是一个名叫 ObTypeIndexTable的表,这个表是一个包含所有ObjectType的表结构,详细可见我另一篇文章。
2023-06-11 20:41:35 698
原创 Windows桌面水印去除工具Universal Watermark Disabler原理分析及实现
通过分析加猜测(后边也证实了)相关逻辑是启动进程时加载此dll,此dll在加载时进程导入表Hook,对shell32.dll中导入的gdi32.dll的ExtTextOutW函数进行挂钩,然后过滤相关字符串。注册表项的相关文件和桌面进程相关,应该是在桌面进程启动时加载了相应的dll文件,而该工具替换成painter_x64.dll,该dll做了相应的功能来实现水印过滤。关于自定义ExtTextOutW,用上边代码可以去除一般水印,也可以使用函数中注释的代码去除指定水印。上边代码只把测试模式去掉,效果如下。
2023-06-10 13:31:21 7514
原创 Windows驱动开发学习记录-使用Inf安装过滤驱动时自动添加注册表相关内容
其中倒数第二个参数一般用0x00010000,这个参数代表用后边指定的内容进行覆盖,但这里需要的是附加内容,所以用的0x00010008,然后右键点击安装就可以了。如果指定的字符串值已存在,则不会追加指定的字符串值。此可选的十六进制值,表示为系统定义的低单词和高字标志值的 ORed 位掩码,定义值条目和/或控制加载项注册表操作的数据类型。后面的值字段可以是用逗号分隔的字符串列表。行中省略标志值,该行对此类型的值项进行操作。,但忽略任何提供的值条目名称和/或值。给定的值项和/或值的类型。
2023-05-26 15:56:35 410
原创 Windows驱动开发学习记录-客户端与驱动交换数据之挂起IRP后客户端无法退出问题
没有特别好的方法,本人采用的思路是驱动创建一个设备进行通讯,客户启动后创建一个线程,该线程调用 DeviceIoControl,驱动层将该操作的IRP挂起,然后有数据时再将数据复制到IRP对应的Irp->AssociatedIrp.SystemBuffer中并完成操作。第二段代码中的关键部分在一开始并没有,也就是说开始没有设置IRP的取消例程,这样在客户端关闭时IRP还是处于挂起状态,导致客户端退不出后。当前的需求时驱动层进行了过滤,想把相应的过滤做成事件通知给应用层并显示。
2023-02-27 17:53:30 138
原创 Windows驱动开发学习记录-IRP取消例程问题
接着把 IRP状态设置为 STATUS_PENDING, 再返回 STATUS_PENDING。这种取消函数会引起问题,在XP上表现为系统假死,在WIn7 x64上直接崩溃,如图。先调用 IoSetCancelRoutine设置取消例程为自定义函数。原因是取消例程的自旋锁的问题, 代码中要加上。一般设置IRP取消例程很简单,大致代码如下。
2023-02-27 17:12:12 197
原创 Windows驱动开发学习记录-应用层打开设备符号链接在不同系统的区别
基中MY_CONTROL_DEVICE_SYMBOL_LINK的定义稍有不同。两种差别是 是个是 \\.\XXXX 另一个是 \\?这个名字在XP 32位及 Win7 64位以上都成立。客户端打开调用的CreateFile。
2023-02-27 16:49:01 130
原创 Windows驱动开发学习记录-Windbg打印Shadow SSDT 脚本
使用Windbg获取Shadow SSDT的GDI相关系统服务函数的相关信息
2021-11-20 16:34:58 588
原创 Windows驱动开发学习记录- Hook NtCreateProcessEx/NtCreateUserProcess实现创建进程过滤
学习SSDT Hook、SSDT InlineHook的一点记录。1.实现前提 使用常规的SSDT hook或者 SSDT inline hook进行挂钩,这里只讨论过滤函数的实现和调试中的一些问题。测试环境为XP sp3 x86 和 Win7 SP1 x86。2.两个系统的差别 Win7以上的系统环境,在后来系统中创建的进程的是NtCreateUserProcess,之前一直挂钩NtCreateProcessEx并不起作用,这里需要注意...
2021-11-14 17:54:50 1282
原创 Windows驱动开发学习记录-在内核中返回错误但用户层不提示错误
最近学习SSDT inline hook中有个需要是想静默的过滤用户行为,也即在驱动中用户行为返回错误,但又想让用户层不提示错误。查了许久,在一帖子里有回复说定义一个错误码为:#define STATUS_SILENT_RETURN (0x80070000) 即定义错误码为0x80070000。一个magic number。win2k源代码private\ntos\rtl\error.c:ULONGRtlNtStatusToDosEr...
2021-11-14 16:39:05 283
原创 Windows驱动开发学习记录-Windbg打印SSDT脚本
一、脚本 x86环境 aS ufLinkS "<u><col fg=\\\"emphfg\\\"><link name=\\\"%p\\\" cmd=\\\"uf 0x%p\\\">";aS ufLinkE "</link></col></u>"; r $t1 = nt!KeServiceDescriptorTable;r $t2 = poi(@$t1 + 0x8);r $t1 = poi(@$t1); .p.
2021-11-04 14:05:56 261
HookAPILib 0.4.rar
2021-11-02
Intel开发者手册 [2021年最新打包版]
2021-09-06
AMD开发者手册[2020年最新打包版]
2021-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人