/*
遍历vad二叉树来遍历进程里的模块
*/
#include <ntifs.h>
typedef struct _MMADDRESS_NODE
{
ULONG64 u1;
struct _MMADDRESS_NODE* LeftChild;
struct _MMADDRESS_NODE* RightChild;
ULONG64 StartingVpn;
ULONG64 EndingVpn;
}MMADDRESS_NODE, *PMMADDRESS_NODE;
typedef struct _EX_FAST_REF
{
union
{
PVOID Object;
ULONG_PTR RefCnt : 3;
ULONG_PTR Value;
};
} EX_FAST_REF, *PEX_FAST_REF;
struct _SEGMENT
{
struct _CONTROL_AREA* ControlArea;
ULONG TotalNumberOfPtes;
ULONG SegmentFlags;
ULONG64 NumberOfCommittedPages;
ULONG64 SizeOfSegment;
union
{
struct _MMEXTEND_INFO* ExtendInfo;
void* BasedAddress;
};
ULONG64 SegmentLock;
ULONG64 u1;
ULONG64 u2;
struct _MMPTE* PrototypePte;
ULONGLONG ThePtes[0x1];
};
//控制区
struct _CONTROL_AREA
{
struct _SEGMENT* Segment;
struct _LIST_ENTRY DereferenceList;
unsigned __int64 NumberOfSectionReferences;
unsigned __int64 NumberOfPfnReferences;
unsigned __int64 NumberOfMappedViews;
unsigned __int64 NumberOfUserReferences;
遍历vad二叉树来遍历进程里的模块
最新推荐文章于 2022-11-18 09:37:44 发布
本文介绍了一种通过遍历VAD(Virtual Address Descriptor)二叉树来获取进程中的模块信息的方法。该方法利用Windows内核提供的数据结构,如MMVAD、MMADDRESS_NODE等,递归地遍历进程的虚拟地址空间,提取每个模块的基地址和大小,并尝试获取模块的文件路径。这种方法对于理解和分析进程加载的DLL和EXE非常有用。

最低0.47元/天 解锁文章
1869

被折叠的 条评论
为什么被折叠?



