An open-source modern Dependency Walker

Usage Exemple

Overview

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

Releases

  • 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 a binary (no installer present). Just uncompress the archive and click on it. 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 go over a GB even for “simple” PEs ). This behaviour can be overriden (app-wide) via a property located in “Options->Properties->Tree build behaviour”.

User options

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).
  • Min-win dlls are not propertly supported. (UPDATED : support of api set schema redirection in 1.5)
  • There are no checks between Api Imports and Exports for the moment, only dll presence is supported.
  • No support of esoteric dll load paths (via AppPaths or SxS manifests entries). (UPDATED : minimal support of sxs private manifests search).

Credits and licensing

Special thanks to :

  • ProcessHacker2 for :
    • phlib, which does the heavy lifting for processing PE informations.
    • peview, a powerful and lightweight PE informations viewer.
  • Dragablz a C#/XAML library which implement dockable and dragable UI elements, and can recreate the MDI programming model in WPF.
  • @aionescu, @zodiacon and Quarkslab for their public infos on ApiSets schema.
  • Thomas levesque’s blog which pretty much solved all my WPF programming issues. His AutoGridSort is used in this project

Copyright (c) lucasg and licensed under the MIT license. See the LICENSE file for full details.

More

Read depends.exe’s FAQs and rationale.

.