Dependency Walker是一款非常不错的PE模块依赖性分析工具,主要用于解决系统中动态链文件出现错误的问题,可以查看exe、dll文件的详细信息,支持扫描32位和64位windows模块,小编还提供了详细的Dependency Walker使用教程,有需要的朋友可以来本站下载!
软件功能
1、查看 PE 模块的导入模块。
2、查看 PE 模块的导入和导出函数。
3、动态剖析 PE 模块的模块依赖性。
4、解析 C++ 函数名称。
Dependency Walker使用教程
1. 双击depends.exe ,运行该程序。
2. 将可执行文件拖到该窗口中。稍等片刻,出现depends 分析结果。
3. 左侧的树控件,显示了该exe 包含哪些module(dll),下面的列表是可能用到的dll 总表。因为子dll又包含孙dll, 孙dll又包含... 总之dll 不超过这么多了。不过这个列表用途不大。
4.点击树形控件的子dll,在又测得两个窗口中有相应的信息。其中下面的窗口显示的是该 dll 的导出信息。如ordinal,hint,funtion-name,entry-point 等,上面窗口为导入表列表 最后一下entry Point 往往写着not found. 是因为hint 值与下面导出表的hint,function 不一致。不过这没有关系。因为导入表hint 是用的链接时开发环境的dll, 而现在导出表是你系统 中正使用的dll, 不一致也正常,反正运行时是根据dll函数名称进行定位的。
5. 说实话,那一堆not found 看着挺吓人的,怪不得叫它垃圾文件,在2008中被废掉了呢。 不过知道了其中道理,觉的也不算垃圾吧。
常见问题解答
1、Q:为什么我看到很多应用程序,其中MPR.DLL在SHLWAPI.DLL下显示为红色,因为它缺少名为WNetRestoreConnectionA的函数?我还得到一个“警告:至少有一个模块由于在延迟负载相关模块中缺少导出功能而导致未解析”消息。
A:某些版本的SHLWAPI.DLL(像Windows XP中的那些版本)对MPR.DLL中的WNetRestoreConnectionA函数具有延迟加载依赖性。只要调用DLL准备好处理这种情况,缺少延迟加载函数就不是问题。依赖性Walker标记所有潜在的问题,因为它无法检测应用程序是否打算处理该问题。在SHLWAPI.DLL的情况下,这不是一个问题,因为它不需要WNetRestoreConnectionA存在并在运行时处理缺少的函数。此警告可以忽略。有关详细信息,请参阅帮助中的“如何解读依赖性沃克的警告和错误”部分。
2、Q:依赖性Walker说我失踪了APPHELP.DLL。从哪里可以得到它?
A:Windows XP的应用程序兼容性功能使用APPHELP.DLL。它是一个Windows XP / 2003 / Vista / 7/8 / +只DLL。如果您看到此警告,您很可能在Windows XP以前的计算机(Windows 95/98 / ME / 2000)上安装了Internet Explorer 6.0。Internet Explorer 6.0安装一个新的SHWAPI.DLL,它对APPHELP.DLL具有延迟加载依赖性。这是正常的,因为SHWAPI.DLL不期望在Windows XP之前的Windows版本上找到APPHELP.DLL。此警告可以忽略。您不需要(或想要)APPHELP.DLL在Windows 95/98 / ME / 2000。
3、Q:如何查看函数的参数和返回类型?
A:对于大多数功能,该信息根本不存在于模块中。Windows的模块文件格式仅提供单个文本字符串来标识每个功能。没有列出参数数量,参数类型或返回类型的结构化方式。然而,一些语言做一些称为功能“装饰”或“调整”的东西,这是将信息编码到文本字符串中的过程。例如,使用简单装饰编码的int Foo(int,int)函数可能会导出为_Foo @ 8。8指的是参数使用的字节数。如果使用C ++装饰,该函数将被导出为?Foo @@ YGHHH @ Z,可以直接解码回函数“ 原始原型: int Foo(int,int)。Dependency Walker通过使用Undeecorate C ++函数命令支持C ++ undecoration 。
更新日志
1、移动到新的HTML帮助系统并更新帮助文本
2、增加了对MSDN 8.0外部帮助的支持,并更新了在线帮助URL
3、改进的并行支持处理DLL清单和app.exe.local文件
4、更新了关于Vista RC1构建的已知操作系统版本,版本号和标志的内部信息