Skip to content

A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.

License

Notifications You must be signed in to change notification settings

mytry1/Dependencies

 
 

Repository files navigation

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

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

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.

Since v1.6, Dependencies is also packaged as an appx package (the Windows equivalent of a .deb file) which can be installed locally. However, you also need to add the test certificate DependenciesAppx_TemporaryKey.cer to your cert hive.

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 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 :

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 :

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

Credits and licensing

Special thanks to :

About

A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 49.4%
  • C# 46.6%
  • C 4.0%