WinDepends 是对经典工具 Dependency Walker 的重写,旨在解决后者在现代Windows系统上的局限性。Dependency Walker 曾经是Windows开发者和逆向工程师不可或缺的工具,用于分析PE(Portable Executable)文件及其依赖模块。然而,随着Windows Vista及后续版本的发布,微软引入了许多新的加载器功能,导致Dependency Walker 在处理现代PE文件时变得不再可靠,尤其是在面对大量人工DLL(如ApiSet合约)的情况下。
为了填补这一空白,WinDepends 应运而生。它不仅修复了Dependency Walker 在现代Windows系统上的问题,还引入了许多新功能,使其成为更强大、更灵活的依赖分析工具。(PS:此工具下载的时候可能会被安全软件阻挡)
主要功能
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文件:客户端和服务器的调试符号文件。
安装步骤:
- 将“bin”目录复制到计算机上的任意位置(可以根据需要重命名该目录)。
- 直接运行
WinDepends.exe
即可启动应用程序。
卸载步骤:
- 终止所有正在运行的
WinDepends.exe
和WinDepends.Core.exe
进程。 - 删除“bin”目录中的所有文件。
评论