社区
进程/线程/DLL
帖子详情
EXE文件里藏DLL文件?
fgwxybmt
2008-07-17 08:37:05
很多程序都用到了这个功能, 问问大家具体是怎么做的 ,最好是详细些 谢谢.
...全文
883
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
文件
。包括设置
DLL
不复制、嵌入
DLL
到项目、处理找不到
DLL
的异常等步骤。针对特定情况,如主窗体非标准Form对象,提供了解决方案。
Dependency Walker,探寻
DLL
和
EXE
文件
本文介绍DependencyWalker工具的下载与使用方法,包括分析
DLL
文件
、
EXE
文件
及其运行时模块的依存关系,帮助读者深入了解Windows程序的依赖性。
Dll
与
exe
的区别及使用详解
本文详细介绍了
EXE
和
DLL
文件
的区别及其应用场景。
EXE
是可直接运行的程序
文件
,而
DLL
则作为动态链接库,包含可供多个程序共享的函数和资源。两者在结构、加载方式、共享性及维护方面有所不同。
将
DLL
打包在
EXE
文件
中的两种方法
本文介绍在C#项目中,如何将
DLL
文件
作为嵌入资源打包至
EXE
,实现独立可执行
文件
。提供了两种方法:一是启动时读取并保存
DLL
至本地;二是直接在内存中加载
DLL
。
Exe
合并压缩:将
dll
等
文件
依赖压缩到一个
exe
中
文章介绍了如何通过WinRAR工具将
exe
依赖的
dll
文件
和其他资源压缩成一个自解压的
exe
文件
,以方便分发和执行。此方法适用于没有源码的情况,通过设置SFX选项,可以配置解压后执行的
文件
和图标,以及解压模式。虽然这会导致加载速度稍慢,但简化了部署过程。
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章