能力值:
( LV2,RANK:10 )
|
-
-
2 楼
得到的是注册的服务名,然后查注册表就有了
|
能力值:
( LV9,RANK:380 )
|
-
-
3 楼
hook ZwLoadDriver,查注册表得到驱动名,然后ZwQuerySystemInformation~
|
能力值:
( LV9,RANK:380 )
|
-
-
4 楼
这是一个ring3的,可以改成驱动的:
#include "ntdll.h"
#include <stdio.h>
#pragma comment(lib,"ntdll.lib")
typedef struct _SYSTEM_MODULE_INFORMATION {
ULONG Reserved[2];
PVOID Base;
ULONG Size;
ULONG Flags;
USHORT Index;
USHORT Unknown;
USHORT LoadCount;
USHORT ModuleNameOffset;
CHAR ImageName[256];
} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;
void main()
{
NTSTATUS status = STATUS_SUCCESS;
ULONG moduleNum,len,retLen;
PSYSTEM_MODULE_INFORMATION module = NULL;
HANDLE CurProc = GetCurrentProcess();
PVOID buf=0;
ZwQuerySystemInformation(SystemModuleInformation,NULL,0,&len);
printf("len= %d\n",len);
status=ZwAllocateVirtualMemory(CurProc,&buf,0,&len,MEM_COMMIT,PAGE_READWRITE);
if (!NT_SUCCESS(status))
{
printf("allocate failed !\n");
return;
}
status=ZwQuerySystemInformation(SystemModuleInformation,buf,len,&retLen);
if (!NT_SUCCESS(status))
{
printf("query failed!\n");
return;
}
module=(PSYSTEM_MODULE_INFORMATION)((PULONG)buf+1);//
moduleNum = *( ( PULONG )buf );//开头的是模块数
printf("\n--------------------------------------------------------------------\n");
for (int i=0;i<moduleNum;i++)
{
printf( "id:%3d\tbaseaddress:0x%08X\tmodulename:%12s\tsize:%7d\n",
i+1,
module->Base,
module->ImageName + module->ModuleNameOffset ,
module->Size
);
module++;
}
printf("--------------------------------------------------------------------\n");
ZwFreeVirtualMemory(CurProc,&buf,&len,MEM_RELEASE);
}
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
hook NtCreateSection
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谁知道驱动是哪一个进程加载的是怎么做的吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
标准的注册服务启动驱动的方式都是Services.exe完成的
|
能力值:
( LV9,RANK:610 )
|
-
-
8 楼
服务方式加载的是由Services.exe做的,最终是由Services.exe调用ZwLoadDriver
直接调用ZwLoadDriver/ZwSetSystemInformation加载的就是当前进程。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
PsSetLoadImageNotifyRoutine
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
做个记号。以后用得到
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
ZwLoadDriver--NtLoadDriver--IopLoadDriver--MmLoadSystemImage--NtCreateSection
服务加载的可以hookZwLoadDriver,SetSystemInformation的是直接调用MmLoadSystemImage的。
PsSetLoadImageNotifyRoutine只是Notify,告诉你驱动已经加载了而已。
|
|
|