社区
进程/线程/DLL
帖子详情
EXE文件里藏DLL文件?
fgwxybmt
2008-07-17 08:37:05
很多程序都用到了这个功能, 问问大家具体是怎么做的 ,最好是详细些 谢谢.
...全文
913
23
打赏
收藏
EXE文件里藏DLL文件?
很多程序都用到了这个功能, 问问大家具体是怎么做的 ,最好是详细些 谢谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fire_cpp
2010-02-14
打赏
举报
回复
mark.学习了。感谢四楼的回复。
sunlin7
2008-07-28
打赏
举报
回复
建议你使用RawPeApi,可以加载内存中的普通DLL文件,不使用任何临时文件。
ethan119
2008-07-27
打赏
举报
回复
LZ什么意思,是EXE中定义DLL还是EXE中输出函数?? 还是在EXE中加载一个DLL??
ZOthello
2008-07-25
打赏
举报
回复
觉得4楼的是正解~~
sking2008
2008-07-25
打赏
举报
回复
ding!!!
socrates
2008-07-25
打赏
举报
回复
mark
CrazyMan1984
2008-07-25
打赏
举报
回复
四楼正解,将可执行文件作为资源包括进去。 另外一种方法就是在Dll文件结尾写数据,也就是所谓的捆绑文件和释放捆绑文件,这是安装包的制作原理。
soliddream66
2008-07-24
打赏
举报
回复
我觉得可以用于做个安装程序,肯定得把什么都放在exe里面了
ruixing123
2008-07-19
打赏
举报
回复
呵呵。。。其实感觉画蛇添足。。。这样做有什么好处?
soliddream66
2008-07-19
打赏
举报
回复
学习,确实很有用,又学了一招
cad_vc
2008-07-19
打赏
举报
回复
学习
fgwxybmt
2008-07-18
打赏
举报
回复
收到,测试中...
Amuro1987218
2008-07-17
打赏
举报
回复
资源文件,见4楼
thirddata
2008-07-17
打赏
举报
回复
只有动态加载的才可以当资源放在exe里面,其他的是不行的。
cnzdgs
2008-07-17
打赏
举报
回复
常用方法就是把DLL作为资源生成到EXE文件里面,程序执行的时候释放出来,做法见4楼。
然后再用LoadLibrary加载、用GetProcAddress取得函数地址并调用,最后FreeLibrary,再把DLL文件删除。
gyk120
2008-07-17
打赏
举报
回复
http://www1.newasp.net/code/vc/3173.html
源码
gyk120
2008-07-17
打赏
举报
回复
还有就是所谓的DLL注入,把DLL注入到EXE的内存空间里面去
源码……《Windows核心编程》里面貌似提到过很多种
Everybody555
2008-07-17
打赏
举报
回复
学习 ,帮顶
孤客天涯
2008-07-17
打赏
举报
回复
把DLL以资源的方式加入到EXE工程中,运行时,先将DLL释放出来就行了
DWORD dwWritten = 0;
HRSRC hServiceExecutableRes = NULL;
HMODULE hInstance = ::GetModuleHandle(NULL);
// Find the binary file in resources
#ifdef _DEBUG
hServiceExecutableRes = ::FindResource(
hInstance,
MAKEINTRESOURCE(IDR_DEBUG_DLL),
_T("DEBUG_DLL")
);
#else
hServiceExecutableRes = ::FindResource(
hInstance,
MAKEINTRESOURCE(IDR_RELEASE_DLL),
_T("RELEASE_DLL")
);
#endif
HGLOBAL hServiceExecutable = ::LoadResource(
hInstance,
hServiceExecutableRes
);
LPVOID pServiceExecutable = ::LockResource(hServiceExecutable);
if (pServiceExecutable )
{
DWORD dwServiceExecutableSize = ::SizeofResource(
hInstance,
hServiceExecutableRes
);
CString strPath = _T("");
strPath.Format("%s\\%s",theApp.GetMoudulePath(),"SocketDll.dll");
HANDLE hFileServiceExecutable = ::CreateFile(
strPath,
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_HIDDEN|FILE_FLAG_WRITE_THROUGH,
NULL
);
if (hFileServiceExecutable == INVALID_HANDLE_VALUE)
{
return FALSE;
}
BOOL D =::WriteFile(hFileServiceExecutable, pServiceExecutable, dwServiceExecutableSize, &dwWritten, NULL);
::CloseHandle(hFileServiceExecutable);
return TRUE;
}
fox000002
2008-07-17
打赏
举报
回复
[Quote=引用楼主 fgwxybmt 的帖子:]
很多程序都用到了这个功能, 问问大家具体是怎么做的 ,最好是详细些 谢谢.
[/Quote]
举个实例程序看看
加载更多回复(3)
C#将引用的
dll
嵌入到
exe
文件
中
通过网上查询,将引用的
dll
,嵌入到
exe
项目中,通过编译为单一的
exe
文件
。 1. 引用
dll
,将引用的
dll
设置为不复制(是否复制不影响使用,编译完成后,只需要
exe
就可以了, 旁边的
dll
是否存在并不影响使用)。 2. 将引用的
dll
嵌入到项目中。 新建一个项目
文件
夹,将引用的
dll
复制到此
文件
夹中,并包含中项目
里
,设置为“嵌入的资源;” 3. 在main()方法...
Dependency Walker,探寻
DLL
和
EXE
文件
在WIndows系统中,或者在我们进行Windows程序开发时,许多应用程序并不是一个完整的可执行
文件
,它们被分割成一些相对独立的动态链接库,即
DLL
(Dynamic Link Library)
文件
。当我们执行某一个程序时,相应的
DLL
文件
就会被调用。 但我们如何知道哪些
DLL
被调用,
DLL
里
究竟有多少函数,又如何知道
EXE
调用了哪个
DLL
的哪些函数呢?其实,这个问题并不难解决,我们可以通过De
Dll
与
exe
的区别及使用详解
DLL
(Dynamic Link Library,动态链接库)和
EXE
(
Exe
cutable, 可执行
文件
)是两种不同类型的
文件
格式,主要用于不同的目的。
DLL
中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。由于
DLL
能被应用程序动态载入内存。所以,应用程序可以在需要时才将
DLL
载入到内存中,这让程序的可维护性变得很高。比如QQ的视频功能需要升级,那么负责编写QQ的程序员不必将QQ所有代码都重写,只需将视频功能相关的
DLL
文件
重写即可。
将
DLL
打包在
EXE
文件
中的两种方法
需求描述 在C#的项目中,经常会引用一些外部的
DLL
库。在发布的时候,必需将这些库和可执行程序一起发布,否则会导致程序无法运行。在一些项目中,会有这样的需求:希望发布一个单独的可执行
文件
,将所引用的
DLL
文件
打包入
EXE
程序中的方式来实现。 实现原理 想要实现这个库有以下三种方式: 以嵌入的资源将
DLL
文件
打包,然后在运行的时候再释放出来; 以嵌入的资源将
DLL
文件
打包,然后在运行时直接加载至内...
Exe
合并压缩:将
dll
等
文件
依赖压缩到一个
exe
中
如果
exe
对某些
dll
有依赖,并且
dll
无法打包进原始
exe
时(比如没有该
exe
的工程源码,或者懒得搭建一套 VS或Python环境),可以优化将
exe
文件
和依赖的
dll
文件
合并成一个最终的release.
exe
,原理:当双击运行新生成的Release.
exe
时,会生成一个临时
文件
夹,将所有的内容解压,并运行setup配置的.
exe
。除了
Dll
文件
依赖,任何
exe
有关的
文件
,比如icon、binary等,都可以通过这个方式打包到一个
exe
中。当然如果有工程源码,还是推荐通过工程方式打包到一个
exe
中,
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章