一、文章来由
希望将Qt项目用在其他机器,用到 depends.exe,但不是太了解 depends.exe 各个窗口的意义,之后我会写一篇文章专门探讨 dll 和 lib 也会用到 depends.exe,但在这里简单说明用法。
二、主要功能
用途:
Depends.exe 是用来反编译VC程序的工具,可以查看PE模块的导入模块以及导入和导出的函数,以及动态剖析PE模块的依赖性和解析C++的函数名称
可分析dll和exe所依赖的dll,可以看到dll以及dll的函数,可以查看导入导出函数。【PE:可执行文件格式,包括 DLL、EXE、FON】
主要功能如下:
查看 PE 模块的导入模块
查看 PE 模块的导入和导出函数
动态剖析 PE 模块的模块依赖性
解析 C++ 函数名称
简而言之:
(1)Depends用来显示与一个可执行文件(exe或者dll)相关的依赖项(dll),以及该exe或dll引用了这些dll中的哪些接口。
(2)同时也可以看到每个被依赖的dll中的所有导出的函数接口。
三、具体用法说明 3.1 窗口分四部分:
(1)左上角是Dll信息窗口,显示你程序所需的Dll模块;
(2)右边第一个窗口是所选的Dll模块所使用的函数;
(3)右边第二个窗口是所选Dll模块的所有的导出函数;
(4)下面窗口是所有需要的Dll模块的属性。
3.2 右侧窗口的意义
右边两个窗口出现四个标签:序号,提示,函数,入口点
如果利用导出是函数,那么出现函数名,如果导出的是序号,那么函数项就是N/A(无法显示),出现红色提示表示不正常,一般为没有该导出函数
该工具得到的是你软件中隐式链接的Dll库,也就是用lib关联的Dll模块,无法显示显式链接的Dll模块,也就是用LoadLibrary函数导入的Dll函数。(切记切记!)
VC6.0自带的Depends软件,该软件在VC6安装目录下的tools文件夹里面 %VC DIR%\Microsoft Visual Studio\Common\Tools
例:
myDll如下所示
下面是一个调用myDll的test.exe