登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 187|回复: 9

驱动开发与系统原理-断链隐藏其他驱动

[复制链接]
回帖奖励 42 断点币 回复本帖可获得 2 断点币奖励! 每人限 1 次(中奖概率 90%)

102

主题

-6

回帖

149

积分

网站编辑

积分
149
发表于 2025-5-21 23:47:43 | 显示全部楼层 |阅读模式

断链隐藏其他驱动需要注意的是要用到之前借壳通信的知识

extern POBJECT_TYPE IoDriverObjectType; NTSTATUS ObReferenceObjectByName( in PUNICODE_STRING ObjectName, in ULONG Attributes, in_opt PACCESS_STATE AccessState, in_opt ACCESS_MASK DesiredAccess, in POBJECT_TYPE ObjectType, in KPROCESSOR_MODE AccessMode, __inout_opt PVOID ParseContext, __out PVOID Object ); 通过驱动名称获取驱动对象

代码

include<ntifs.h>

include<intrin.h>

extern POBJECT_TYPE IoDriverObjectType; NTSTATUS ObReferenceObjectByName( in PUNICODE_STRING ObjectName, in ULONG Attributes, in_opt PACCESS_STATE AccessState, in_opt ACCESS_MASK DesiredAccess, in POBJECT_TYPE ObjectType, in KPROCESSOR_MODE AccessMode, __inout_opt PVOID ParseContext, __out PVOID Object ); typedef struct _LDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; LIST_ENTRY InMemoryOrderLinks; LIST_ENTRY InInitializationOrderLinks; PVOID DllBase; PVOID EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; UNICODE_STRING BaseDllName; ULONG Flags; USHORT LoadCount; USHORT TlsIndex; union { LIST_ENTRY HashLinks; struct { PVOID SectionPointer; ULONG CheckSum; }; }; union { ULONG TimeDateStamp; PVOID LoadedImports; }; PVOID EntryPointActivationContext; PVOID PatchInformation; LIST_ENTRY ForwarderLinks; LIST_ENTRY ServiceTagLinks; LIST_ENTRY StaticLinks; } LDR_DATA_TABLE_ENTRY, * PLDR_DATA_TABLE_ENTRY;

VOID DriverUnload(PDRIVER_OBJECT pDriverObject) {

DbgPrint("Unload Driver Success! ");

} VOID HideDriver(PDRIVER_OBJECT pDriverObject) { PLDR_DATA_TABLE_ENTRY HeaderNode = &((PLDR_DATA_TABLE_ENTRY)pDriverObject->DriverSection)->InLoadOrderLinks; RemoveEntryList(HeaderNode); pDriverObject->DriverSection = 0; pDriverObject->Size = 0; pDriverObject->Type = 0; }

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath) { DbgPrint("Load Driver Success!"); //设备名称 UNICODE_STRING uDrivername = { 0 }; //初始化设备名称 RtlInitUnicodeString(&uDrivername, L"\Driver\MyDriver2"); //设置驱动对象 PDRIVER_OBJECT pDriverObject1 = NULL; //获取驱动对象->借壳通信 NTSTATUS ntSTATUS = ObReferenceObjectByName(&uDrivername, OBJ_CASE_INSENSITIVE, NULL, FILE_ALL_ACCESS, *IoDriverObjectType, KernelMode, NULL, &pDriverObject1); if (!NT_SUCCESS(ntSTATUS)) { DbgPrint("%x", ntSTATUS); } if (pDriverObject1) { ObDereferenceObject(pDriverObject1);//失败后关闭驱动对象引用 } HideDriver(pDriverObject1); return STATUS_SUCCESS; } 我们现在不需要挂系统线程进行驱动隐藏,我们直接封装成函数,通过RemoveEntryList的API进行删除,在删除之前通过ObReferenceObjectByName获取驱动对象

没有启动“隐藏驱动”

我们可以看到自己的驱动

启动“隐藏驱动”

Driver2已经被隐藏,现在只有自己的Driver4

0

主题

121

回帖

215

积分

注册会员

积分
215
发表于 2025-5-22 16:20:05 | 显示全部楼层

回帖奖励 +2 断点币

谢谢分享
回复

使用道具 举报

0

主题

250

回帖

258

积分

注册会员

积分
258
发表于 2025-5-23 09:09:00 | 显示全部楼层

回帖奖励 +2 断点币

历害!!
回复

使用道具 举报

0

主题

19

回帖

58

积分

新手上路

积分
58
发表于 2025-5-23 12:09:41 | 显示全部楼层

回帖奖励 +2 断点币

非常好教程
回复

使用道具 举报

0

主题

13

回帖

29

积分

新手上路

积分
29
发表于 2025-6-3 00:49:40 | 显示全部楼层

回帖奖励 +2 断点币

大佬六六六我喜欢我喜欢我喜欢
回复

使用道具 举报

0

主题

8

回帖

13

积分

新手上路

积分
13
发表于 2025-6-3 09:38:54 | 显示全部楼层

回帖奖励 +2 断点币

谢谢分享
回复

使用道具 举报

0

主题

10

回帖

4

积分

新手上路

积分
4
发表于 2025-6-3 12:24:48 | 显示全部楼层

回帖奖励 +2 断点币

谢谢大佬分享,学习了
回复

使用道具 举报

0

主题

46

回帖

92

积分

新手上路

积分
92
发表于 2025-6-4 05:32:27 | 显示全部楼层

回帖奖励 +2 断点币

膜拜神贴,后面的请保持队形~
回复

使用道具 举报

0

主题

17

回帖

51

积分

新手上路

积分
51
发表于 2025-6-4 08:35:17 | 显示全部楼层

回帖奖励 +2 断点币

果断MARK,前十有我必火!
回复

使用道具 举报

1

主题

21

回帖

23

积分

新手上路

积分
23
发表于 2025-6-4 18:29:15 | 显示全部楼层

回帖奖励 +2 断点币

太厉害了,又学会了一些!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-6-16 09:33 , Processed in 0.114532 second(s), 29 queries , Yac On.

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表