首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

dll可以打开吗?怎么查看dll中的函数,怎么引用

2013-12-06 
dll可以打开吗?如何查看dll中的函数,如何引用?dll可以打开吗?如何查看dll中的函数,如何引用?看见一个文件

dll可以打开吗?如何查看dll中的函数,如何引用?
dll可以打开吗?如何查看dll中的函数,如何引用?看见一个文件里面很多以后缀名dll的,它是怎么引用的,,不懂啊,,,dll可以打开吗?怎么查看dll中的函数,怎么引用 dll dll打开 dll引用
[解决办法]
dll没有特定的程序是不能打开的,而且不能单独运行。就是一堆二进制,查看dll的导出函数有很多,比如dumpbin.exe,Depends等等。dll一般有显示加载和隐示加载两种方式,隐示加载加载通过他的导入库.lib文件引入,显示加载通过LoadLibrary加载。当然,隐示加载最终也是调用LoadLibrary实现的。还是多看看书的好
[解决办法]
如果你的工程没有main函数,那么工程最后应该生成库文件。如果生成的是动态库,将会有dll和lib后缀的2个同名文件。
如果你要使用这个库的导出函数,你可以:
1.直接调用函数,在编译的链接阶段将lib库作为参数传入,使你的程序能发现这个函数,建立和dll的依赖关系;
2.调用LoadLibrary,使用函数名来查找定位函数,并且使用函数指针来调用函数。这种用法在编译的链接阶段不需要对应库,只要在运行阶段能够找到该库。插件通常采用这种方法。
[解决办法]
1.首先确定这个dll是不是真的是动态库,而不是其他什么的。
2.确定你要的功能是否为一个导出函数,如果导出直接LoadLibrary、GetProcAddress就可以用(COM、ATL除外),也可以自己创建一个lib文件静态链接
3.关于你要的功能是未导出函数,那么用OD、IDA等程序逆向了。
  ①.找关键二进制串,在Load以后再内存中暴搜
  ②.基址+偏移的方式调用(不适合多版本情况)
  ③.根据某个导出函数定位此函数(导出函数直接调用你想要的函数的时候,也就是不宜嵌套太对层函数)
4.关于COM、ALT、ActiveX之类的东西,告诉你别想了,要完全逆开了才知道怎么用
[解决办法]
VS里边自带:
dumpbin(CUI)
SKATE11提到的dependency walker更好,是GUI界面。
MinGW中也自带一些小程序。

热点排行