Dependency Walker打开wintrust.dll及关联DLL加载缓慢原因咨询
我之前排查过类似的问题,这个现象本质是老版本Dependency Walker与Windows 10的API集机制不兼容导致的,具体原因拆解如下:
Dependency Walker版本过于陈旧,无法正确解析Windows 10的API转发DLL
Dependency Walker v2.2.6是2006年发布的,而Windows 10引入了API集(就是那些API-MS-WIN-*开头的DLL)——这些DLL本身不包含实际代码,只是作为“转发器”把API调用导向KERNEL32、USER32等核心系统DLL。老版本的Depends.exe完全不理解这种转发逻辑,会误把转发关系当成真实的依赖调用,进而陷入重复扫描的循环,这就是你看到KERNEL32.DLL和API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL之间“循环调用”的原因——这根本不是真的循环,只是工具的解析错误。wintrust.dll的复杂依赖链被错误解析放大了耗时
wintrust.dll是Windows信任验证的核心组件,本身就依赖大量系统DLL(比如加密、安全策略相关的组件)。当Depends错误解析API集的转发关系时,会反复遍历这些依赖链,每一次误判的循环都会让扫描时间指数级增长。打开单独的wintrust.dll时,这个错误解析过程已经需要40秒;而你的自定义DLL包含wintrust.dll时,Depends会同时扫描自定义DLL的所有依赖,再叠加wintrust的错误解析链,耗时拉到10分钟就完全说得通了。Windows 10 1709的系统特性加剧了兼容性问题
你用的Win10 1709是比较早期的版本,部分系统DLL的转发逻辑和后续版本存在细微差异,老版本Depends对这种差异的兼容性更差,进一步放大了解析时的卡顿和循环误判。
内容的提问来源于stack exchange,提问作者Mikhail

