使用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
字符串
2条答案
按热度按时间snz8szmq1#
从The Covert Way to find the Reference Count of DLL开始:
DLL的加载计数是一个16位的值。如果该值被视为有符号短消息,为-1(0xfffff),则表示DLL是静态链接的,否则是动态加载的。
enxuqcxy2#
所选答案的附加信息:
如果DLL不是静态链接的(没有LDRP_STATIC_LINK标志),这也意味着DLL可能会使用GET_MODBLE_HANDLE_EX_FLAG_PIN标志使用GetModuleHandleExA加载,导致引用计数为0xffff。这将阻止卸载DLL,无论FreeLibrary被调用多少次。