Dependencies

用 C# 语言重写旧的遗留软件 "dependence.exe",供 Windows 开发者解决 dll 加载依赖性问题。「A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.」

Github星跟蹤圖

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.

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

  • v1.11 :
    • lots of bugfixes and incremental improvements
    • covid pandemic
  • v1.10 :
    • lots of bugfixes and incremental improvements
    • support of Windows 8.1 apisets parsing
  • v1.9 :
    • Display imports and exports the way Depends.exe does.
    • Added user customization for search folders and working directory
    • Added LLVM demangler to availables symbol demangling
    • Fixed Wow64 FsRedirection bugs
    • F5 can now refresh the analysis
    • Added CLR assembly dependencies enumeration
    • Added a packaging option without Peview.exe (which triggers some AV).
  • v1.8 :
    • Add x86/x64 variants for Dependencies
  • v1.7 :
    • Add CLI tool "dependencies.exe"
  • v1.6 :
    • Add appx packaging
  • v1.5 :
    • Support of Sxs parsing
    • Support of api set schema parsing
    • API and Modules list can be filtered
  • v1.0 -- Initial release

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".

Tree build behaviours available :

  • ChildOnly (default) : only process PE child imports and nothing beyond.
  • RecursiveOnlyOnDirectImports : do not process delayload dlls.
  • Recursive : Full recursive analysis. You better have time and RAM on your hands if you activate this setting :

Limitations

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

  • Only direct, forwarded and delay load dependencies are supported. Dynamic loading via LoadLibrary are not supported (and probably won't ever be).
  • Support of api set schema redirection since 1.5
  • Checks between Api Imports and Exports.
  • Minimal support of sxs private manifests search only.

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 :

主要指標

概覽
名稱與所有者lucasg/Dependencies
主編程語言C#
編程語言C# (語言數: 4)
平台
許可證MIT License
所有者活动
創建於2017-06-25 15:00:10
推送於2024-05-15 00:55:24
最后一次提交2021-11-11 12:59:18
發布數9
最新版本名稱v1.11.1 (發布於 2021-10-25 20:36:51)
第一版名稱v1.0 (發布於 2017-07-09 17:33:51)
用户参与
星數9.8k
關注者數162
派生數797
提交數507
已啟用問題?
問題數229
打開的問題數120
拉請求數19
打開的拉請求數11
關閉的拉請求數25
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?