Dependencies README

The project's README from github.com/lucasg/Dependencies. As one markdown file: README.md.

Dependencies - An open-source modern Dependency Walker

Build status

Download here

(If you're running an AV, use this download instead)

NB : due to limitations on /clr compilation, Dependencies needs Visual C++ Redistributable installed to run properly.

Usage Exemple

Overview

Dependencies is a rewrite of the legacy software Dependency Walker which was shipped along Windows SDKs, but whose development stopped around 2006. Dependencies can help Windows developers troubleshooting their dll load dependencies issues.

Releases

Installation and Usage

Dependencies is currently shipped as two binaries (no installer present) : Dependencies.exe as a CLI tool and DependenciesGui.exe for its GUI counterpart (see screenshot). Just click on one of the release numbers above (preferably the latest), download and uncompress the archive and run DependenciesGui.exe. Since the binary is not signed, SmartScreen might scream at runtime. Dependencies also bundle ClrPhTester.exe, a dumpbin-like executable used to test for non-regressions.

Dependencies currently does not recursively resolve child imports when parsing a new PE since it can be really memory-hungry to do so ( it can over a GB even for "simple" PEs ). This behavior can be overridden (app-wide) via a property located in "Options->Properties->Tree build behaviour".

User options

Tree build behaviours available :

Yes that's 7 GB of RAM being consumed. I'm impressed the application didn't even crash

Limitations

At the moment, Dependencies recreates features and "features" of depends.exe, which means :

Building

Building is pretty straightforward. The only caveat is you need to select the "Debug" or "Release" configuration and "x64" or "x86" platform which may not be the default.

Credits and licensing

Special thanks to :

Dependencies (lucasg/Dependencies)

Searching Database…

这是什么东西?Dependencies 是一个开源的现代替代品,用来取代 Dependency Walker——那是一款 Windows 工具,通过显示可执行文件或库需要加载哪些模块,帮助开发者排查 DLL 加载依赖问题。
它是原版的 Dependency Walker,还是一个新项目?它是用 C# 从零重写的版本,取代了过去随 Windows SDK 附带的 depends.exe;原版大约在 2006 年就停止开发,而这个项目至今仍在持续更新(最新到 v1.11)。
怎么把它装到我的电脑上?没有安装程序:从 GitHub 下载版本压缩包,解压后运行 DependenciesGui.exe 打开图形界面,或者运行 Dependencies.exe 使用命令行。从 v1.8 开始提供单独的 x86 和 x64 版本。
解压下载的文件后就能直接运行吗?差不多,但你需要先安装 Visual C++ Redistributable;没有它工具就无法正常运行,这是它采用 /clr 编译方式带来的副作用。
它能捕捉到应用程序在运行时加载的每一个依赖吗?不能——它能解析直接导入、转发导入和延迟加载导入,还能处理 API set 重定向,但通过 LoadLibrary 动态加载的 DLL 始终看不到,恐怕以后也不会支持;对 Sxs 私有清单也只有最基本的支持。
能在 Linux 或 Mac 上用吗?不能——这是一个仅限 Windows 的工具,专门处理 Windows 的 DLL 问题:图形界面是基于 WPF 的桌面应用,发布版本也只有 x86 和 x64 的 Windows 二进制文件。
SmartScreen 或杀毒软件会报毒吗?有可能。发布的二进制文件没有签名,所以 SmartScreen 首次运行时可能会弹警告;如果杀毒软件把主压缩包标记为威胁,README 里还提供了一个备用下载链接。
为什么依赖树默认不展开所有内容?完整递归非常吃内存——即使是简单的 PE 文件,也可能占用超过 1 GB 内存。默认的 ChildOnly 模式只处理直接子项导入;你可以在 Options、Properties、Tree build behaviour 里切换到 RecursiveOnlyOnDirectImports 或完整的 Recursive 模式。
我可以不用图形界面,改用脚本运行它吗?可以。从 v1.7 开始,下载包里除了 DependenciesGui.exe,还附带一个命令行工具 dependencies.exe。压缩包里还有 ClrPhTester.exe,这是一个类似 dumpbin 的小工具,作者是用它来测试回归问题的。
除了依赖树,它还提供哪些额外的分析功能?它能像 depends.exe 那样显示导入和导出表,核对 API 导入与导出是否匹配,解析 API set 架构和 Sxs 清单(自 v1.5 起),枚举 CLR 程序集依赖,支持对 API 和模块列表进行筛选,并使用 LLVM demangler 还原符号名称(v1.9 加入)。
Creator
lucasg
Size
15 MB
Stars
11.9K
Age
9y
Commits · 90 Days