有谁知道 LDR_MODULE.LoadCount 在 Windows 8 上的位置?
以下代码始终打印 6 作为引用计数:S 我使用 RemoteDLLTool 检查过,基地址和所有其他信息都是正确的。然而,LoadCount 是错误的,因为它总是 6。我读到,如果它是 6,则意味着 DLL 是动态加载的,如果它是 -1,则它是静态的。
还有一种方法可以迭代链表,而不必不断读取进程内存?
我需要以某种方式计算出引用计数。基本上,Windows 7 上的下面的代码会告诉我 DLL 被加载了多少次。又名 DLL 的引用计数。
#include <winternl.h>
typedef struct _LDR_MODULE
{
LIST_ENTRY InLoadOrderModuleList;
LIST_ENTRY InMemoryOrderModuleList;
LIST_ENTRY InInitializationOrderModuleList;
PVOID BaseAddress;
PVOID EntryPoint;
ULONG SizeOfImage;
UNICODE_STRING FullDllName;
UNICODE_STRING BaseDllName;
ULONG Flags;
SHORT LoadCount;
SHORT TlsIndex;
LIST_ENTRY HashTableEntry;
ULONG TimeDateStamp;
} LDR_MODULE, *PLDR_MODULE;
int GetModuleLoadCount()
{
DWORD dwBytesRead = 0;
PROCESS_BASIC_INFORMATION PBI = {0};
HANDLE ProcessHandle = GetCurrentProcess();
if (NT_SUCCESS(NtQueryInformationProcess(ProcessHandle, ProcessBasicInformation, &PBI, …Run Code Online (Sandbox Code Playgroud)