怎么将程序需要的一些文件整合进exe或者隐藏起来

starytx 2017-06-05 10:09:19
加精
vs2013 MFC程序。如标题所示,程序需要加载一些本地文件比如 html文件,现在想把这些文件怎么样封装起来,防止用户之间看到,但又不影响程序的正常加载(程序加载的是一个文件路径),作为资源加载进去,读出来的是BYTE流,这个没办法用的。改html文件后缀(比如改为 .dat),感觉只能简单掩人耳目。不知道还有没有其他什么解决方案。我想的是能不能将这些东西压缩或者怎么样编译,等用的时候可以方便的释放出来也可以。
...全文
131951 78 打赏 收藏 转发到动态 举报
写回复
用AI写文章
78 条回复
切换为时间正序
请发表友善的回复…
发表回复
red-fly 2017-09-28
  • 打赏
  • 举报
回复
做过把所有的文件包括目录结构放入exe 的结尾,在运行的时候,就从它自己里面读取这些数据释放到临时目录中,然后再运行其中指定的一个程序,这个程序再去读取释放出来的文件/目录。 所以就有三个程序,一个是释放程序,一个是打包程序,一个是最终要运行的程序。 当然,我的程序没有加密,而且在运行结束后也没有删除掉释放出来的任何文件。只是在下一次释放时,会把之前的覆盖掉
smwhotjay 2017-09-28
  • 打赏
  • 举报
回复
bin2h 资源 作为头文件里的数组。你甚至可以加密压缩再bin2h 然后代码解压解密数组。或者作为打包资源zip rar带密码的。 我还见过土豆是用sqlite .db文件。下载任务 历史那些。
赵4老师 2017-09-28
  • 打赏
  • 举报
回复
FileMonitor软件是吃闲饭的吗?
worldy 2017-09-28
  • 打赏
  • 举报
回复
将需要的文件加入到资源中,程序运行的时候从资源里加载
flyhigh 2017-08-06
  • 打赏
  • 举报
回复
在EXE里做一个简单的http服务器更简单。
verphan 2017-07-22
  • 打赏
  • 举报
回复
学习学习
ling1980 2017-07-22
  • 打赏
  • 举报
回复

//把DLL文件添加到EXE文件中去
BOOL CDisposionServer::AddRess(LPCTSTR FileName1, LPCTSTR FileName2, int rce)
{
	HANDLE hFile;
	DWORD dwFileSize,      
		  dwBytesRead;
	LPBYTE lpBuffer;

	hFile = CreateFile(FileName1, GENERIC_READ, 
					   0,
					   NULL,
					   OPEN_EXISTING,
					   FILE_ATTRIBUTE_NORMAL,
					   NULL);

	if (INVALID_HANDLE_VALUE != hFile)
	{
		dwFileSize = GetFileSize(hFile, NULL);

		lpBuffer = new BYTE[dwFileSize];

		if (ReadFile(hFile, lpBuffer, dwFileSize, &dwBytesRead, NULL) != FALSE)
		{
			HANDLE hResource;

			hResource = BeginUpdateResource(FileName2, FALSE);
			if (NULL != hResource)
			{
				if (UpdateResource(hResource, 
					RT_RCDATA, 
					MAKEINTRESOURCE(rce), 
					MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), 
					(LPVOID) lpBuffer, 
					dwFileSize) != FALSE)
				{
					EndUpdateResource(hResource, FALSE);
				}
			}
		}
		else 
		{
			delete [] lpBuffer;
			CloseHandle(hFile);
			return 0;
		}
    
	}
	delete [] lpBuffer;   
	CloseHandle(hFile);
	return 1;
}
AddRess(tempDir,EXEFilePath,130)
ling1980 2017-07-22
  • 打赏
  • 举报
回复

BOOL ReadRes(char *path, int rce)
{
	//得到自身路径
	TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中定义为 128 
	GetModuleFileName(NULL,exeFullPath,MAX_PATH);

	HMODULE hLibrary;
	HRSRC hResource;
	HGLOBAL hResourceLoaded;
	LPBYTE lpBuffer;

	hLibrary = LoadLibrary(exeFullPath);
	if (NULL != hLibrary)
	{
		hResource = FindResource(hLibrary, MAKEINTRESOURCE(rce), RT_RCDATA);
		if (NULL != hResource)
		{
			hResourceLoaded = LoadResource(hLibrary, hResource);
			if (NULL != hResourceLoaded)        
			{
				lpBuffer = (LPBYTE) LockResource(hResourceLoaded);            
				if (NULL != lpBuffer)            
				{///////////////////////////////////       
					DWORD dwFileSize,
						  dwBytesWritten;
					HANDLE hFile;

					dwFileSize = SizeofResource(hLibrary, hResource);

					hFile = CreateFile(path,
									   GENERIC_WRITE,
									   0,
									   NULL,
									   CREATE_ALWAYS,
									   FILE_ATTRIBUTE_NORMAL,
									   NULL);

					if (INVALID_HANDLE_VALUE != hFile)
					{
						WriteFile(hFile, lpBuffer, dwFileSize, &dwBytesWritten, NULL);

						CloseHandle(hFile);
					}/////////////////////////////////
				}
			}    
		}
		else
		{
			FreeLibrary(hLibrary);
			return 0;
		}
	}
	FreeLibrary(hLibrary);
	return 1;
}
ReadRes(tempDir, 130)///tempDir展开的文件文件位置,130是资源所在的位置
miantian 2017-07-21
  • 打赏
  • 举报
回复
把文件放在工程里,直接编译。
火龙果ovo 2017-07-20
  • 打赏
  • 举报
回复
很好的文章,学习了学习了
qq_37532362 2017-07-17
  • 打赏
  • 举报
回复
55555555
a18363939205 2017-07-15
  • 打赏
  • 举报
回复
大神 膜拜
xiaozhu12371237 2017-07-14
  • 打赏
  • 举报
回复
为啥要复杂话
pugongyingpgyidc 2017-07-13
  • 打赏
  • 举报
回复
感谢你们的分享
许文君 2017-07-13
  • 打赏
  • 举报
回复
随便他怎么改啊,把所有东西加到res下,运行到时直接资源里抽出来替换掉原来的,要觉得看着恶心打个zip包加个密,改个后缀。 我以前遇到过有个哥们将文件修改为只读,校验不过我直接让软件go die了
arm杀手 2017-07-12
  • 打赏
  • 举报
回复
6666666666666666
lx624909677 2017-07-11
  • 打赏
  • 举报
回复
不一定要和exe在一起吧,可以把exe用的资源文件,全部文件,以二进制流的方式写到一个文件里,每次启动exe,先对这个文件进行拆分,也就是把这个文件恢复到合成之前的状态,这个拆分的路径可以放再一个不容易让人直接找到的地方
red-fly 2017-07-11
  • 打赏
  • 举报
回复
简单的思路: 把所有的文件写到一个文件中,写的时候就简单加密一下(除非你的项目重要程度非常高,否则个人认为没有必要使用过于复杂的加密),在用的时候,就先把它们临时释放到temp目录,用完后立即删除 如果再简单一些,程序启动时就释放到temp目录,程序关闭时把它们删除
xiaozhu12371237 2017-07-10
  • 打赏
  • 举报
回复
添加到资源就行
james_andy 2017-07-10
  • 打赏
  • 举报
回复
怎么感觉这么复杂
加载更多回复(55)
(题外话:从本次开始 我新增了jQuery EasyUI的专题页面 大家可以关注我的专题页来及时获取最新的EasyUI资源 专题页地址如下http:http://download.csdn.net/album/detail/343 同时也希望转载的那些朋友能保留我资源的说明及出处地址 我花那么多精力制作出来的 你们鼠标点两下就给我转走了还不注明出处 实在是不厚道 本来就是本着分享精神的 为的就是聚集一点人气和提供一个优良的环境来一起学习步的 请不要抹杀掉我的热情 谢谢 )   时隔4个月之久 EasyUI终于迎来大版本更新了 本次更新内容诸多 除了常规维护外 还新增了3个新组件 都很实用 详细的可以阅读更新说明 里面给了详细的解读 另外 从该版本开始我将会逐步的将EasyUI官方以及第三方较好的插件API整合到API文档当中 并且会对这些插件做一些简单的Demo实现 存放到配套提供的程序包demo文件夹下 以便大家学习和使用 本期文档中将官方提供的所有附加插件的API都整理并存放到Extension节点下了 这些扩展的demo在附带的程序包中已经提供 可以用于参考使用 jQuery EasyUI 1 4版本更新内容: Bug(修复) menu:修复在删除一个菜单项的时候该菜单无法正确自适应高度的问题; datagrid:修复在datagrid宽度太小的时候“fitColumns”方法无法正常工作的问题 Improvement(改) EasyUI的所有组件已经支持非固定 百分比大小的尺寸设置; menu:添加“showItem” “hideItem”和“resize”方法; menu:基于窗体大小自动调整高度; menu:添加“duration”属性 该属性允许用户自定义隐藏菜单动画的持续时间 以毫秒为单位; validatebox:添加“onBeforeValidate”和“onValidate”事件; combo:从该版本开始combo组件扩展自textbox组件(textbox是1 4中新增的组件); combo:添加“panelMinWidth” “panelMaxWidth” “panelMinHeight”和“panelMaxHeight”属性; searchbox:从该版本开始searchbox组件扩展自textbox组件(textbox是1 4中新增的组件); tree:添加“getRoot”方法 用于返回通过“nodeEl”参数指定的节点的顶部父节点元素 注意:官网的英文API中该函数的说明有误 其说明是none 无参数 实际这里是需要参数的 ; tree:添加“queryParams”属性; datetimebox:添加“spinnerWidth”属性; panel:添加“doLayout”方法 用于控制面板内组件的大小; panel:添加“clear”方法 用于清除面板内的内容; datagrid:允许用户设置百分比宽度的列(该功能真是千呼万唤始出来啊 ); form:添加“ajax” “novalidate”和“queryParams”属性; linkbutton:添加“resize”方法 New Plugin(新组件) textbox:该组件是一个增强的输入字段 它可以让用户非常简单的构建一个表单; datetimespinner:该组件是一个日期和时间的微调组件 它允许我们选择一个特定的日期或时间; filebox:filebox 该组件表单元素中用于上传文件文件框工具组件 ">(题外话:从本次开始 我新增了jQuery EasyUI的专题页面 大家可以关注我的专题页来及时获取

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧