首页
社区
课程
招聘
[原创]给Dll制作导入的lib
发表于: 2011-10-7 11:56 7365

[原创]给Dll制作导入的lib

2011-10-7 11:56
7365

1.引言:

调用一个dll,分为静态调用和动态调用。静态调用的话,需要编译dll时产生的一个lib文件,而动态调用的话,需要使用LoadLibrary加载dll,然后用GetProcAddress去依次获取每个需要使用的函数地址。而某些第三方的库,因为某些原因,只给了你dll,而没给你对于的lib(比如OD2.0刚出来的时候,就没有编写插件的lib),于是就有了本文了,本文会描述整个构造的过程。

2.基础:

构造一个lib,首先要明白lib的分类,lib我的了解有两种,一种是静态库(所有的代码都包含在其中,编译器链接的时候会链接到可执行程序中,运行时不依赖dll),一种是导入库(只含有dll导出函数的一些信息,链接的时候,用于写EXE的导入表的,而不包含可执行代码,执行时,需要dll的支持,否则会弹出初始化失败)。我的描述可能有不对的地方,具体可以去百度之。

Lib的生成,主要还是依靠编译的工具,一个是dumpbin.exe,另一个是lib.exe。利用这两个工具即可从dll导出其对应的lib。我要做的是,修补一下生成的lib文件,因为有些特殊的情况,没办法直接生成lib,等下会描述这种情况。关于那两个工具使用,可以参考

http://www.cnblogs.com/dongzhiquan/archive/2009/08/04/1994764.html

描述的很详细了,我就不多说了。

具体去我博客看下,或者下载pdf版本的看,编辑这个实在太累

http://netsdspace.com/?p=11

估计文章写的有点乱,第一次写这么长的东西,将就看吧。我估计,我还会写下一篇,讲怎么给od2.0版本生成编写插件的lib的。那个原理和这个是一样的,只是导出的函数太多了,纯手工的话,确实很悲剧,好了,这都是后话了,下篇再说了。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (4)
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
DLL2LIB
.
2011-10-7 11:58
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
这个仅仅是一个导入库,而不是把一个dll变成静态库调用,还是有区别的~
2011-10-7 12:00
0
雪    币: 768
活跃值: (530)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
4
楼主的工具可以将DLL转成静态LIB,编译生成的程序可脱离DLL运行吗?
2011-10-7 12:17
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
不可以,我没写工具,我只是用了现成的工具。二楼说的工具可以。
2011-10-7 12:34
0
游客
登录 | 注册 方可回帖
返回
//