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

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

2011-10-7 11:56
6814
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的。那个原理和这个是一样的,只是导出的函数太多了,纯手工的话,确实很悲剧,好了,这都是后话了,下篇再说了。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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