0x0000ffff是windows下dll的默认加载次数吗?

问题描述 投票:0回答:2

使用windbg,通过

!dlls
命令获取带有加载计数的dll列表。观察到许多加载的 dll 的加载计数为
0x0000ffff
。 这是默认值吗?
这还有别的意思吗?

      0x00262fa8: C:\WINDOWS\system32\ole32.dll
      Base   0x774e0000  EntryPoint  0x774fd0b9  Size        0x0013d000
      Flags  0x80084006` LoadCount   0x0000ffff  TlsIndex    0x00000000
             LDRP_STATIC_LINK
             LDRP_IMAGE_DLL
             LDR**strong text**P_ENTRY_PROCESSED
             LDRP_PROCESS_ATTACH_CALLED
windows dll windbg
2个回答
4
投票

来自寻找DLL引用计数的隐蔽方法

DLL 的加载计数是一个 16 位值。如果该值(被视为有符号短整型)为 -1 (0xfffff),则表示 DLL 是静态链接的,否则是动态加载的。


0
投票

所选答案的附加信息:

如果 DLL 不是静态链接的(不存在 LDRP_STATIC_LINK 标志),也可能意味着 DLL 可能使用 GetModuleHandleExA 加载了 GET_MODULE_HANDLE_EX_FLAG_PIN 标志,导致引用计数为 0xffff。无论 FreeLibrary 被调用多少次,这都可以防止卸载 DLL。

© www.soinside.com 2019 - 2024. All rights reserved.