第一步:下载并解压Depends,运行其中的depends.exe,然后选择菜单“File→Open”(文件→打开),在文件选择框中选中需要分析的DLL文件并打开,此处选择QQ目录下的QQZip.dll。
第二步:在程序左侧的树状栏中就列出了这个DLL使用了哪些其他DLL的功能函数(原来DLL中还可以调用其他DLL^O^),而右侧的两个分栏列表分别显示了函数输入及输出表,函数输出表即为该DLL提供给其他EXE或者DLL调用的函数的总列表。
第三步:函数输出表的Function栏中即为输出函数的名称(见图1),在QQZip.dll中共发现了2个函数:Unzip、Zip。因此可以判断该DLL在QQ程序中负责压缩和解压缩的任务。
图1 QQZip.dll中的函数
2.审审EXE究竟用了哪个DLL
还是拿QQ来作为例子,在Depends中打开QQ.exe,这时界面左侧的树状列表中显示的就是QQ.exe调用的DLL列表(见图2),如果展开这些DLL分支,还会发现其他的DLL,这就说明QQ调用的这些DLL文件还有可能(几乎是肯定)再调用别的DLL。这就好比买了一台新的DVD机,可能其中用的机芯是SONY的,而这个机芯里的一个小电容又有可能是别的公司的,这是同样的道理。
图2 QQ.exe所调用的dll
3.用DLL看穿EXE真面目
刚才得到了QQ.exe所使用的DLL列表,其实通过这个列表,还能分析出很多别的信息。比如其中包含MFC42.dll,所以可以判断QQ.exe是采用VC(即Visual C++)编写的,而包含WSOCK32.dll则说明这个程序带有网络通讯功能(废话!QQ如果不能网络通讯还有什么用……)。以下是一个简表,大家在分析别的EXE时可以根据其所使用的DLL来对其功能进行初步判断。
DLL文件名 可以判断出的EXE信息
MFC42.dll 使用VC5.0/6.0编写。
VBRun*.dll “*”代表数字版本号,使用VB3.0/4.0编写。
MSVBVM50.dll 使用VB5.0编写,在Windows 98(SE)上自带该DLL。
MSVBVM60.dll 使用VB6.0编写,在Windows Me/2000/XP等系统上自带该DLL。
ADVAPI32.dll 可能会进行注册表操作。
WSOCK32.dll 具备网络通讯功能。
WS2_32.dll 具备网络通讯功能。
WININET.dll 具备HTTP浏览、下载等功能,典型的例子是浏览器、下载工具。
WINMM.dll 具备多媒体播放能力。
DDRAW.dll 游戏、高级图像处理工具。
D3D*.dll 3D游戏,或者动画处理工具。
本文来源:电脑报 作者:佚名