使用Dependency Walker分析x86可执行文件在Windows 7 x64上挂起

her*_*ube 21 dependency-walker windows-7-x64

在Windows 7 x64下,当我尝试使用最新版本的Dependency Walker(2.2.6000)分析x86可执行文件时,分析过程始终会挂起.大多数情况下,加载的最后一个DLL是c:\windows\syswow64\URLMON.DLL,因此似乎该DLL内部的某些内容导致了问题.在Windows 7 x86上分析相同的可执行文件可以完美地运行.

我用Google搜索得非常广泛,但无法找到问题的解决方案.我发现的一个建议是卸载IE 8或IE 9并用IE 7替换它,但这并没有真正帮助.我能观察到的唯一影响是,在IE 7中,分析过程会挂起在不同的DLL上(iertutil.dll如果我没记错的话,也可以从系统的syswow64文件夹中找到).

所以我的问题是:如何让Dependency Walker在x64 Windows 7上配置x86应用程序?当然,首先要知道问题存在的原因也很好:-)

最后的一些说明:

  • 我正在使用x86版本的Dependency Walker,因为我想分析一个x86可执行文件
  • 以管理员身份运行Dependency Walker无济于事
  • 标记为"可能在WOW64上失败"的所有性能分析选项均被禁用
  • 我目前用作重现问题的测试用例的可执行文件是Sumatra PDF查看器(下载链接),因为它是一个简单的.exe,不需要安装

Sam*_*Sam 17

根据@Stone Free的评论更新了说明

您需要的下载链接已更改为:

https://www.microsoft.com/en-us/download/details.aspx?id=42273

转到2.安装WDK 10部分并选择下载:

从第2阶段找到并运行Wdk设置(wdksetup.exe),然后选择下载选项而不是安装.

完成后找到并运行DownloadLocation\Windows Kits\10\WDK\Installers>"Windows Driver Kit-x86_en-us.msi"

然后你会发现Dependency Walker:

  • 64位版本的C:\ Program Files(x86)\ Windows Kits\10\Tools\x64\depends.exe
  • 对于32位版本,C:\ Program Files(x86)\ Windows Kits\10\Tools\x86\depends.exe

这是Dependency Walker版本2.2.10011内置2015-10-29 x86版本

一个方便的工具是使用 https://github.com/juntalis/depends-launcher这是一个简单的Dependency Walker启动器,它决定了windows图像(dll,exe等)的平台(x86 | x64 | ia64)和启动相应版本的depends.exe以查看其依赖项.它的主要目的是在上下文菜单条目中使用,以轻松查看图像的依赖项.

  • 您仍然可以使用depends.exe获取WDK 10.0.10586 http://download.microsoft.com/download/C/E/1/CE19C726-6036-4443-845B-A652B0F48CD7/wdk/wdksetup.exe (14认同)
  • 我想知道为什么开发人员不更新他自己的网站.如果不是这个评论和一些谷歌搜索,我不认为我会得到新版本. (5认同)
  • 截至2016年10月26日,上述程序未安装depends.exe; 创建Tools\x64和Tools\x86但它们都不包含depends.exe :-( (4认同)
  • 因此,由于WDK 10不包含依赖性walker,我下载了**WDK 8.1 Update(适用于Windows 8.1,8和7驱动程序)**,您可以在Sam提供的相同URL中找到它.这个包含depends.exe(版本9600),至少对我来说,修复了OP报告的挂起问题.BTW您可以从www.dependencywalker.com下载的版本是古老的(版本6000). (3认同)
  • 呃 - @Ringo提供的链接安装没有为我安装Dependency Walker(截至2018年4月). (3认同)
  • 截至2018年9月18日,此页面上的所有Microsoft链接均指向Windows Driver Kit 10.0.10586.0,正如其他人所指出的那样,该文件在任何地方均不包含“ depends.exe”。该链接指向8.1:https://www.microsoft.com/zh-cn/download/details.aspx?id = 42273 (2认同)

vla*_*sch 6

目前已知的最新版本 Dependency Walker 似乎是 2015 年 10 月 29 日发布的 2.2.10011(链接如下)。

它是与某些适用于 Windows 10 的 Windows 开发工具包一起部署的,但 Microsoft 页面不再提供它包含的版本,并且由于未知原因,所有较新的版本不再包含它。

也许是因为最新版本也存在一些 动态链接库重定向问题或其他性能问题。(在 Windows 10 下使用 dependency walker 似乎比以前的 Windows 版本慢得多且麻烦 - 但仍然是完成这项工作的绝佳工具)

有以下版本可用:

潜在替代品:

对于简单的任务,Github 项目lucasg/Dependencies可能值得查看。但它目前不支持分析正在运行的应用程序来调试损坏的运行时依赖项depends.exe


小智 3

我遇到了同样的问题,我发现它在最新版本的 Dependency Walker 中得到了修复。我比较了 2.2.6000 和 2.2.8288,前者存在问题,但后者不存在问题。但是,您可能需要等待 Windows 8 WDK 向公众发布才能获取最新版本。

  • 有人能在任何地方找到这个新版本的 Dependency Walker 吗?目前的WDK和SDK中似乎都没有这个功能。 (8认同)
  • 2.2.10011 对我来说仍然挂起。尝试分析一些 qt5 应用程序。最新加载的库是“WINSPOOL.DRV” (6认同)
  • 然后运行DownloadLocation\Windows Kits\10\WDK\Installers>“Windows Driver Kit-x86_en-us.msi” (2认同)