- 注册时间
- 2021-4-16
- 最后登录
- 2024-9-9
- 在线时间
- 6 小时
编程入门
- 龙马币
- 72
|
思路来源是CSDN的一位大佬,不过他的文章中只提到了关键函数,没有贴出代码,于是乎,自己动手~
- 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⊙)…
|
|