WinDepends—现代Windows PE文件依赖分析工具

WinDepends 是对经典工具 Dependency Walker 的重写,旨在解决后者在现代Windows系统上的局限性。Dependency Walker 曾经是Windows开发者和逆向工程师不可或缺的工具,用于分析PE(Portable Executable)文件及其依赖模块。然而,随着Windows Vista及后续版本的发布,微软引入了许多新的加载器功能,导致Dependency Walker 在处理现代PE文件时变得不再可靠,尤其是在面对大量人工DLL(如ApiSet合约)的情况下。

为了填补这一空白,WinDepends 应运而生。它不仅修复了Dependency Walker 在现代Windows系统上的问题,还引入了许多新功能,使其成为更强大、更灵活的依赖分析工具。(PS:此工具下载的时候可能会被安全软件阻挡)

WinDepends—现代Windows PE文件依赖分析工具插图

主要功能

1、全面的PE文件支持

  • 支持32位和64位Windows模块(包括 .exe.dll.ocx.sys 等),并构建所有依赖模块的层次树图。
  • 对于每个找到的模块,列出该模块导出的所有函数,以及哪些函数被其他模块实际调用。
  • 另一个视图显示所需文件的最小集合,提供每个文件的详细信息,包括完整路径、基地址、版本号、机器类型、调试信息等。

2、高级依赖解析

  • 支持延迟加载的DLL。
  • 支持ApiSet合约(模式版本6,适用于Windows 10/11)。
  • 支持绑定导入(Bound Imports)。
  • 支持Side-by-Side模块(SxS)。

3、用户友好的功能

  • 支持拖放操作,方便快速加载文件。
  • 提供最近使用的文件列表,便于快速访问常用文件。
  • 支持配置外部查看器、帮助命令、模块路径解析、搜索顺序和PE加载器重定位设置。
  • C++函数名称解装饰,提供人类可读的C++函数原型,包括函数名称、返回类型和参数类型。

4、会话管理

  • 能够将当前会话保存到文件中,并在程序中恢复,方便后续分析。

5、客户端-服务器架构

  • 客户端是一个基于WinForms的.NET应用程序,提供图形用户界面(GUI)。
  • 服务器是一个无窗口的C应用程序,负责解析PE文件。客户端启动服务器进程,并通过网络或本地通信与其交互。

缺失功能与已知问题

由于WinDepends目前处于BETA阶段,以下功能尚未实现或被认为是过时的:

  • 原始Dependency Walker的部分功能(如分析功能)尚未实现。
  • MDI GUI(多文档界面)已被放弃,如果你需要同时分析多个文件,可以启动程序的另一个副本。
  • 帮助文件尚未完成,计划将所有文档移到一个单独的公共仓库,并发布为PDF文件。
  • CLI版本尚未实现,团队仍在评估是否需要该功能。
  • ARM二进制文件尚未在原生环境中测试,因为开发团队没有裸机环境。
  • 某些功能可能因BETA状态而无法按预期工作或被禁用。

安装与使用

WinDepends 的GitHub仓库包含一个名为“bin”的目录,内含以下文件:

  • WinDepends.exe:主GUI应用程序(客户端)。
  • WinDepends.Core.exe:无窗口应用程序(服务器),由客户端启动。
  • PDB文件:客户端和服务器的调试符号文件。

安装步骤

  1. 将“bin”目录复制到计算机上的任意位置(可以根据需要重命名该目录)。
  2. 直接运行 WinDepends.exe 即可启动应用程序。

卸载步骤

  1. 终止所有正在运行的 WinDepends.exe 和 WinDepends.Core.exe 进程。
  2. 删除“bin”目录中的所有文件。

评论