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

如何把DLL,lib文件打散成obj文件重新链接

2012-03-07 
怎么把DLL,lib文件打散成obj文件重新链接?怎么把DLL,lib文件打散成obj文件重新链接?有一个软件每次运行都

怎么把DLL,lib文件打散成obj文件重新链接?
怎么把DLL,lib文件打散成obj文件重新链接?
有一个软件每次运行都调用了一个dll文件,我复制软件时还得复制几个dll文件!

dll文件也是链接成的,应该可以把函数取出来,再把软件重新链接的...

如:a.exe,调用a.dll,b.dll
把a.exe,a.dll,b.dll全部打散,再重新结合一个文件.而且能运行!

不考虑复杂情况,如加密呀,版权呀,文件大小呀,什么软件编译的呀....

请问怎么实现?


[解决办法]
编译器有个选项:dll调用以静态/动态嵌入,你只要以静态link就OK,不需要动dll或lib
[解决办法]
别人给的DLL一般是release版本,你是进不了代码内部的,楼主就不要考虑了,反编译花的时间足够你自己重新写一份了
[解决办法]
+1

探讨
别人给的DLL一般是release版本,你是进不了代码内部的,楼主就不要考虑了,反编译花的时间足够你自己重新写一份了

[解决办法]

这个比较困难。我来描述一个场景给你说明。

假设有执行文件 a.exe 使用 b.dll 中的 c 函数。问题是,如何确定 c() 是否会调用 b.dll 中的其他函数呢?甚至,c()可能需要调用b.dll的导入库,假设是x.dll。这样的工具制作起来是有挺大难度的。
[解决办法]
复制的时候多复制一个dll也嫌麻烦?
[解决办法]
多个dll不太好弄 如果是gcc的话 有no-undefined链接开关还行 别的编译器不知道

多个lib容易实现,vc、gcc的实现方式不同
gcc使用ar x取包,再使用ar cru打包,再ranlib下
vc直接可以使用lib进行lib的合并
[解决办法]
关于合并vc的dll,lz可以参见http://www.vckbase.com/document/viewdoc/?id=1128

.net的都不在讨论之列
[解决办法]

合并,我觉得是挺困难的。也不知道这个函数是否会使用dll中的静态数据呀。也许在使用dll前还有个WSAStartup()之类的初始化库的过程,怎么办啊。
[解决办法]
探讨

突然发现的,用7z打开lib文件里面有一个obj文件!....

[解决办法]
那个技术叫做反编译吧 Google “反编译 dll”

热点排行