社区
进程/线程/DLL
帖子详情
EXE文件里藏DLL文件?
fgwxybmt
2008-07-17 08:37:05
很多程序都用到了这个功能, 问问大家具体是怎么做的 ,最好是详细些 谢谢.
...全文
745
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)
EXE
与
DLL
文件
修改工具(Restorator简体中文版)
EXE
与
DLL
文件
修改工具(Restorator简体中文版) 相信很多网虫们都知道啦,这玩意很猛,很强大。
专门针对
Exe
与
dll
的加壳与脱壳工具
这是一组对应用程序加壳与脱壳的工具。其中upx.
exe
能够将应用程序加壳,只需将其拖放到upx.
exe
图标上即可。
郁金香VIP专用OD
郁金香VIP专用OllyDBG 因压缩包
文件
过大,删除了Win32API.hlp,包含了大量的工具: TOOL1=进程隐
藏
工具|Tools\进程隐
藏
工具\进程隐
藏
工具.
exe
TOOL2=代码注入器|Tools\代码注入器\CodeInEX.
exe
TOOL3=ImPortREC|Tools\ImportREC\ImportREC.
exe
TOOL4=计算器|Tools\calc.
exe
TOOL5=破解计算器|Tools\hexCalc.
exe
TOOL6=ASCII码|Tools\Ascii.
exe
TOOL7=字符串转换|Tools\VXCalc.
exe
TOOL8=函数查询r|Tools\FunSearcher\函数查询r.
exe
TOOL9=
DLL
加载|Tools\
Dll
_LoadEx.
exe
TOOL10=汇编查询|Tools\asm\AsmFun.
exe
TOOL11=指令字典2005XT|Tools\2005XT\Dicbook2005XT\指令字典2005XT.
exe
TOOL12=ASM命令|Tools\Asm\AsmFun.
exe
Exe
合并压缩:将
dll
等
文件
依赖压缩到一个
exe
中
如果
exe
对某些
dll
有依赖,并且
dll
无法打包进原始
exe
时(比如没有该
exe
的工程源码,或者懒得搭建一套 VS或Python环境),可以优化将
exe
文件
和依赖的
dll
文件
合并成一个最终的release.
exe
,原理:当双击运行新生成的Release.
exe
时,会生成一个临时
文件
夹,将所有的内容解压,并运行setup配置的.
exe
。除了
Dll
文件
依赖,任何
exe
有关的
文件
,比如icon、binary等,都可以通过这个方式打包到一个
exe
中。当然如果有工程源码,还是推荐通过工程方式打包到一个
exe
中,
使用压缩软件将
exe
和
dll
文件
打包成一个
exe
启动
文件
问题:以搜狗输入法的截图软件为例,如何将
exe
和
dll
文件
打包成一个的
exe
可执行
文件
,即将该软件目录下的
文件
合并成一个可以独立运行的
exe
文件
解决:通过压缩软件,本文我使用的软件是2345好压。(参考文章《 将
exe
和
dll
文件
打包成单一的启动
文件
》使用的压缩软件是winrar) 1.选中所有的
文件
,鼠标右键单击,选择【添加到压缩
文件
(A)…】 2.填写压缩
文件
名(打包后生成
exe
文件
的文...
进程/线程/DLL
15,474
社区成员
49,172
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章