使用 Dependency Walker 探查 EXE 或 DLL 文件的依存关系

使用 Dependency Walker 探查 EXE 或 DLL 文件的依存关系

ependency Walker 是允许您查看 DLL 或 EXE 文件的依存关系的免费工具。另外,您可以探查您的模块在运行时的依存关系。

可从以下网站获得此工具:

http://dependencywalker.com

汉化版: http://pan.baidu.com/s/1gdGDQYf 密码: kwea

该工具主要介绍某个dll或者exe调用了其他资源的哪些函数信息。Dependency Walker recursively scans all dependent modules required by a particular application.  他能够监测调用文件错误,函数错误等信息
看下图就是具体各部分的说明 
点击查看原始尺寸

问题1:为什么要用dll
dll和exe其实差不多,唯一不同在于它不能作为应用程序被双击单独执行,dll的作用在于为别人 做嫁衣。windows系统中包括三个经典的dll:kernel32,user32,GDI32。看名字就知道,第一个管系统内核比如进程、内存,第二 个管用户消息界面,第三个管画图和显示。
那么一般的dll究竟有什么好处呢?主要是模块化、可扩展性

问题2:为什么有些dll用dependency打开什么都看不见

大部分dll里面都是functions,为了其他应用程序或者dll调用的,但也有dll里面放了很多资源,包括位图、图标、工具栏、菜单等。这时候建议用freeres打开,就可以看到这些图片了。

问题3:怎么有些dll都带有DllRegisterServer和DllUnregisterServer 这两个函数 

因为dll也分两种,一种需要注册才能用,另外一种不用,带有这些函数的说明属于后一类。注册dll的方法是在运行里输入 

regsvr32 123.dll 

同时需要指出的是某些程序规定了一些插件dll公用接口,那么你就会发现该程序所有插件dll都包括某些函数声明完全一样的入口函数,因为只有定义这些函数,主程序才可以正常调用该dll。

问题4:什么是加载时链接和运行时链接 
前者:编写程序时,需要加H和lib放在链接库,那么就可以像引用本程序函数一样使用DLL中函数 
后者:使用LoadLibrary 加载dll,使用GetProcAddress获取函数地址

猜你喜欢

转载自blog.csdn.net/qq_41786318/article/details/81384236
今日推荐