0x0000ffff是windows中dll的默认加载计数吗?

xcitsw88  于 11个月前  发布在  Windows
关注(0)|答案(2)|浏览(199)

使用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

字符串

snz8szmq

snz8szmq1#

The Covert Way to find the Reference Count of DLL开始:
DLL的加载计数是一个16位的值。如果该值被视为有符号短消息,为-1(0xfffff),则表示DLL是静态链接的,否则是动态加载的。

enxuqcxy

enxuqcxy2#

所选答案的附加信息:
如果DLL不是静态链接的(没有LDRP_STATIC_LINK标志),这也意味着DLL可能会使用GET_MODBLE_HANDLE_EX_FLAG_PIN标志使用GetModuleHandleExA加载,导致引用计数为0xffff。这将阻止卸载DLL,无论FreeLibrary被调用多少次。

相关问题