Skip to content

A dependency explorer for troubleshooting DLL/EXE load dependency issues. Written in C#. Continuing the development of Lucas Georges's implementation.

License

Notifications You must be signed in to change notification settings

mariusbancila/DependencyExplorer

 
 

Repository files navigation

DependencyExplorer - An open-source modern Dependency Walker

Overview

DependencyExplorer is a fork of the Dependencies project by Lucas Georges. It is a rewrite of the legacy software Dependency Walker which was shipped along Windows SDKs, but whose development stopped around 2006.

DependencyExplorer can help Windows developers troubleshooting their dll load dependencies issues.

Usage Exemple

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

Releases (forked version)

  • v1.12
    • UI improvements:
      • individual font settings (family, size, style) for modules tree, modules list, imports list, and exports list
      • added overlays for architecture types (displays 86, 64 on the right side of the icon); optional, controlled with a user setting
      • replaced error rectangle overlays with images (displays E for error on the left side of the icon)
      • incorrect checksum displayed in red (and tooltip instead of explanatory text)
      • new modules tree context menu commands: copy file path, open in explorer
    • Bugfixes:
      • prevent duplicates in most recent files

Releases (original version)

  • 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

DependencyExplorer 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. DependencyExplorer also bundle ClrPhTester.exe, a dumpbin-like executable used to test for non-regressions.

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

  • 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, DependencyExplorer 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 straightforward:

  • Clone the repo.
  • Open the Dependencies.sln solution in Visual Studio.
  • Select the configuration (Debug or Release) and the platform (x86 or x64).
  • Build the solution.

Credits and licensing

Special thanks to :

About

A dependency explorer for troubleshooting DLL/EXE load dependency issues. Written in C#. Continuing the development of Lucas Georges's implementation.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 78.5%
  • C++ 17.4%
  • PowerShell 3.1%
  • C 1.0%