首页
社区
课程
招聘
[分享] 64位系统下7行代码隐藏驱动,不触发PG
发表于: 2018-8-25 00:54 12850

[分享] 64位系统下7行代码隐藏驱动,不触发PG

2018-8-25 00:54
12850
思路来源是CSDN的一位大佬:https://blog.csdn.net/zhuhuibeishadiao/article/details/75658816
不过他的文章中只提到了关键函数,没有贴出代码,于是乎,自己动手~
extern "C" NTSYSAPI NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength);

typedef struct _KLDR_DATA_TABLE_ENTRY {
	LIST_ENTRY InLoadOrderLinks;
	PVOID ExceptionTable;
	ULONG ExceptionTableSize;
	PVOID GpValue;
	ULONG UnKnow;
	PVOID DllBase;
	PVOID EntryPoint;
	ULONG SizeOfImage;
	UNICODE_STRING FullDllName;
	UNICODE_STRING BaseDllName;
	ULONG Flags;
	USHORT LoadCount;
	USHORT __Unused5;
	PVOID SectionPointer;
	ULONG CheckSum;
	PVOID LoadedImports;
	PVOID PatchInformation;
} KLDR_DATA_TABLE_ENTRY, *PKLDR_DATA_TABLE_ENTRY;

typedef struct _SYSINFO {
	ULONG U;
	PVOID X[2];
	PVOID BaseAddress;
	PVOID Size;
} SYSINFO, *PSYSINFO;

typedef VOID(*_MiProcessLoaderEntry)(IN PKLDR_DATA_TABLE_ENTRY DataTableEntry, IN LOGICAL Insert);

VOID HideDriver(PDRIVER_OBJECT DriverObject, ULONG Offset) {
	ULONG NeededSize;
	PSYSINFO SysInfo = (PSYSINFO)&SysInfo;
	ZwQuerySystemInformation(11, NULL, 0, &NeededSize);
	SysInfo = (PSYSINFO)ExAllocatePool(PagedPool, NeededSize);
	ZwQuerySystemInformation(11, SysInfo, NeededSize, NULL);
	_MiProcessLoaderEntry MiProcessLoaderEntry = (_MiProcessLoaderEntry)((PUCHAR)SysInfo->BaseAddress + Offset);
	MiProcessLoaderEntry((PKLDR_DATA_TABLE_ENTRY)DriverObject->DriverSection, 0);
}
其中HideDriver函数就是主要代码啦,一共7行(诚实的楼主)。
第二个参数是版本偏移(其实就是硬编码= =我自己通过IDA找出来的),Win7 32位是 0x761D7 ,Win7 64位是 0x16A1D0 ,Win10 64位是 0x18AD8 。我根据多份系统样品的IDA分析,这个常量应该是不会变的,其中Win10的截至1809Preview(build 17713)暂未改变。
结构体KLDR_DATA_TABLE_ENTRY来自百度。
结构体SYSINFO为自创,网上找的定位ntoskrnl基址的代码都太繁琐或者兼容性差,so我自己改了一下~
在卸载驱动之前必须恢复隐藏,也就是再调用一次函数,第二个参数由0改成1。
我这个方法隐藏驱动后一切正常,不触发PG,可以与应用层通信,也可以FltRegisterFilter等。但如果按照原文中说的执行DriverObject->DriverSection = NULL后会出问题(在MajorFunction[IRP_MJ_DEVICE_CONTROL]函数中执行的),不知道是不是我注册了MiniFilter导致的-_-...
--------------------------------------------
好了,本小白继续去钻研WSK去了(⊙o⊙)…

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (14)
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
2
https://github.com/ExpLife0011/awesome-windows-kernel-security-development --> DKOM --> https://github.com/ZhuHuiBeiShaDiao/NewHideDriverEx
  我基本都汇总了
2018-8-25 01:09
0
雪    币: 2025
活跃值: (2075)
能力值: ( LV12,RANK:243 )
在线值:
发帖
回帖
粉丝
3
安于此生 https://github.com/ExpLife0011/awesome-windows-kernel-security-development --> DKOM --> https: ...
大佬666,原来早有人整理了,怪我太晚才看到他的博客
不过大佬你的动态搜索代码太冗长了,而且从性质上来说也是硬编码,我只是分享一下自己写的较简洁的代码
2018-8-25 01:32
0
雪    币: 6588
活跃值: (4032)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有 开源的,而且处理的很不错。  你浪费了太多时间了。  你缺少人和你交流把。
2018-8-25 03:55
0
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看这里,这个是真正的大佬.里面的代码都是吊吊吊的,不用你再去csdn那种地方找了,
https://github.com/killvxk

嘿嘿
2018-8-25 07:07
0
雪    币: 8188
活跃值: (2847)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
支持楼主发帖分享
2018-8-25 10:45
0
雪    币: 433
活跃值: (1910)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
安于此生 https://github.com/ExpLife0011/awesome-windows-kernel-security-development --> DKOM --> https: ...
我以前不明白什么叫做应有尽有,直到看到您的分享
2018-8-25 10:46
0
雪    币: 2025
活跃值: (2075)
能力值: ( LV12,RANK:243 )
在线值:
发帖
回帖
粉丝
8
zaimongli 看这里,这个是真正的大佬.里面的代码都是吊吊吊的,不用你再去csdn那种地方找了, https://github.com/killvxk 嘿嘿
感谢大佬的推荐!
我只是把编程当个人兴趣,享受一步步解决困难的过程,直接看别人开源的或许对于专职工作者来说更省事。就比如一道很难的数学题,虽然有详略的答案解析,但是先凭自己本事做出来更有成就感嘛~
2018-8-25 14:02
0
雪    币: 42
活跃值: (208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
安于此生 https://github.com/ExpLife0011/awesome-windows-kernel-security-development --> DKOM --> https: ...
首先 NewHideDriverEx 也能检测出来的,NewHideDriverEx使用了ObMakeTemporaryObject会对象劫持这是个大记号,并且WIN10下依然会蓝屏(很久才会蓝,因为NewHideDriverEx只处理了seh,那是不够的)
2018-8-28 18:09
0
雪    币: 37
活跃值: (213)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
安于此生 https://github.com/ExpLife0011/awesome-windows-kernel-security-development --> DKOM --> https: ...
哟,你好。
2018-9-6 08:51
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
王齐 哟,你好。
"NewHideDriverEx使用了ObMakeTemporaryObject会对象劫持这是个大记号"  什么意思 
2018-11-5 23:00
0
雪    币: 42
活跃值: (208)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
killpy "NewHideDriverEx使用了ObMakeTemporaryObject会对象劫持这是个大记号" 什么意思
我也不知道为什么,因为我测试过的,所以才这么说的,使用ObMakeTemporaryObject后,PCHunter64.exe里查看先提示对象劫持
2018-11-6 11:30
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
13
没有啊 我 按照这个方法隐藏对象后 开pch  扫不到驱动了  也看不到 劫持
2018-11-6 21:35
0
雪    币: 83
活跃值: (1087)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
老坛酸菜TM 我也不知道为什么,因为我测试过的,所以才这么说的,使用ObMakeTemporaryObject后,PCHunter64.exe里查看先提示对象劫持
没有啊 我 按照这个方法隐藏对象后 开pch  扫不到驱动了  也看不到 劫持
2018-11-6 21:36
0
雪    币: 206
活跃值: (2001)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
win10确实会蓝屏,很久才会蓝屏
2021-4-12 18:06
0
游客
登录 | 注册 方可回帖
返回
//