能力值:
( LV5,RANK:60 )
|
-
-
2 楼
我也喝多了才进来的。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
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;
}LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY;
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
/************************************************************************/
/* 枚举所有驱动模块
/* strDvrNameArray 为数组,保存每一个驱动模块的名称
/* uMaxCount 为 strDvrNameArray 的最大长度
/* 返回数组中元素的实际数目
/************************************************************************/
ULONG EnumDriverModule(PUNICODE_STRING strDvrNameArray, ULONG uMaxCount)
{
/* 每一个驱动的 DriverObject->DriverSection 是一个指向 LDR_DATA_TABLE_ENTRY 的指针 */
PLDR_DATA_TABLE_ENTRY pLDREntry = (PLDR_DATA_TABLE_ENTRY)pDrvObj->DriverSection;
PLIST_ENTRY pEntry = pLDREntry->InLoadOrderLinks.Blink;
ULONG uCount = 0;
UNICODE_STRING wStrTmp;
while(TRUE)
{
PLDR_DATA_TABLE_ENTRY pTmpPLDREntry = (PLDR_DATA_TABLE_ENTRY)pEntry;
if(uCount >= uMaxCount)
{
break;
}
if (pTmpPLDREntry == pLDREntry)
{
break;
}
pEntry = pTmpPLDREntry->InLoadOrderLinks.Blink;
if (pTmpPLDREntry->DllBase != 0 && pTmpPLDREntry->SizeOfImage > 0)
{
strDvrNameArray[uCount] = pTmpPLDREntry->BaseDllName;
uCount++;
}
}
return uCount;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
好懒啊,一句解说也没有,比我还懒
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
只得到了驱动模块的名称啊, 模块基址在哪里呢,请再说一下, 或者加点代码
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
typedef struct _SYSTEM_MODULE_INFORMATION // Information Class 11
{
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;
BOOLEAN GetModuInfor(PULONG uBase,PULONG uSize,char *szModuleName)
{
BOOLEAN b=FALSE;
ULONG size,index;
PULONG buf;
PSYSTEM_MODULE_INFORMATION module;
NTSTATUS status;
ZwQuerySystemInformation(11,0, 0, &size); //获取大小
if (size == NULL)
{
KdPrint(("size == NULL\n"));
return 0;
}
buf = (PULONG)ExAllocatePool(PagedPool, size); //分配内存
if(NULL==buf)
{
DbgPrint("failed alloc memory failed \n");
return 0;
}
status=ZwQuerySystemInformation(11,buf, size , 0);//获取模块信息
if(!NT_SUCCESS( status ))
{
DbgPrint("failed query\n");
return 0;
}
module = (PSYSTEM_MODULE_INFORMATION)(( PULONG )buf + 1);
for (index=0;index <*buf ;index++ )
{
if (_stricmp(module[index].ImageName + module[index].ModuleNameOffset, szModuleName) == 0) //判断
{
*uBase = (ULONG)module[index].Base;
*uSize = (ULONG)module[index].Size;
b=TRUE;
break;
}
}
ExFreePool(buf);
return b;
}
if(GetModuInfor(&g_SysBase,&g_SysSize,"dump_wmimmc.sys"))
留意LZ和飞天大虾很久了 嘿嘿
最近飞天大虾好像失踪了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
留意LZ和飞天大虾很久了 嘿嘿
最近飞天大虾好像失踪了
为啥留意小弟
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
正好最近手头紧,接分买邀请码送人。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
动态加载的驱动模块也能枚举到么?
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
动态加载的驱动模块也能枚举到么?
|
|
|