内核驱动隐藏自身【断链】

内核驱动加载断链式隐藏自身

//创建一个驱动对象数据结构
typedef struct _KLDR_DATA_TABLE_ENTRY
{
	LIST_ENTRY64 InLoadOrderLinks;//关键链
	ULONG64 Undefined1;
	ULONG64 Undefined2;
	ULONG64 Undefined3;
	ULONG64 NonPagedDebugInfo;
	ULONG64 DllBase;
	ULONG64 EntryPoint;
	ULONG SizeOfImage;
	UNICODE_STRING FullDllName;
	UNICODE_STRING BaseDllName;
	ULONG   Flags;
	USHORT  LoadCount;
	USHORT  Undefined5;
	ULONG64 Undefined6;
	ULONG   CheckSum;
	ULONG   padding1;
	ULONG   TimeDateStamp;
	ULONG   padding2;
}KLDR_DATA_TABLE_ENTRY, * PKLDR_DATA_TABLE_ENTRY;

//驱动入口代码
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){
	//声明必要结构list获取自身对象结构
	PKLDR_DATA_TABLE_ENTRY list = (PKLDR_DATA_TABLE_ENTRY)DriverObject->DriverSection;
	//断链操作,上一个对象等于下一个,下一个等于上一个对象,达到把自己隐藏起来的目的
	*((ULONGLONG*)list->InLoadOrderLinks.Blink) = list->InLoadOrderLinks.Flink;
	((LIST_ENTRY64*)list->InLoadOrderLinks.Flink)->Blink = list->InLoadOrderLinks.Blink;
	//下面关键,功能可以达到很多!前后断隐藏自身(头尾全断可以达到禁止任何程序加载驱动的目的,其他还有很多,这里只列出一个)
	list->InLoadOrderLinks.Flink = (ULONGLONG)&(list->InLoadOrderLinks);//Flink
	list->InLoadOrderLinks.Blink = (ULONGLONG)&(list->InLoadOrderLinks);//Flink
//操作完成返回OK
return STATUS_SUCCESS;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Rose

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值