DLL(四)
一 工具Depends
其实不需要用dumpbin我们可能被cd来cd去搞的很不爽了,有没有一个比较简单的工具来看.exe依赖于哪些DLL已经.dll有哪些导出函数可以使用VC提供的D:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin下的Depends.Exe工具,在VS2005下没有安装好像在VC6中有安装,这里直接是一个exe那我们就可以双击之后使用了。
我看看我装的qq播放器依赖于哪些dll,直接拖进来就是了:
是不是看的一清二楚,鸟枪换炮了吧。
看dll有哪些导出文件也是如此:
我想看看qqdownload有哪些导出文件,顺便还能看到这个qqdownload.dll它又依赖于哪些dll
二 通过序号访问导出函数及导出函数的名字改编问题
很多时候我们用到的dll文件不是我们自己做的,而是第三方做的,在这种情况下我们只能请上帝保佑dll的制作者是用def文件,函数的名字是不会被改编的
但是有的时候确实是被改编了,并没有采用好的方法制作的dll被名字改编过了,但是我们还想用,而且没有.h文件提供给我们,怎么办?看下面
我发现QQPlayer.exe所依赖的binkw32.dll中的导出函数就被名字改编了,如下图所示:
怎么办这个时候我们如果用dumpbin可能要费点经把dos中的函数名copy到Windows中,但是Depends直接就有这个功能。就像上图做的那样就ok了应该是隐式的调用了剪切板了。
那现在我们就可以调用被名字改编过的函数了。
如果我们想按照序号来调用则可以如下进行:
注意:是根据Ordinal的序号
有关dll安全的知识可以参考http://old.blog.edu.cn/user1/2070/archives/2005/95664.shtml