相关疑难解决方法(0)

Windows 8 上的 DLL 加载计数

有谁知道 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)

c++ winapi

5
推荐指数
1
解决办法
1903
查看次数

标签 统计

c++ ×1

winapi ×1