网站大量收购闲置独家精品文档,联系QQ:2885784924

(实例13)捆绑exe文件.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 时间控制 第4章 时间控制 PAGE 106 PAGE 106 PAGE 107 PAGE 107 实例 捆绑exe文件 实例目的 捆绑exe文件的意思是将多个文件打包在一起,合并成一个最终的可执行文件,当运行这个最终的可执行文件时,就相当于运行了合并前的多个可执行文件。这种程序在木马程序合并中会经常用到,本例就实现两个可执行文件的捆绑,选择两个可执行文件后,程序将其捆绑在一起,生成合并后的文件,运行这个合并后的文件,则两个可执行文件都被运行了。 实现方法 捆绑可执行文件的基本思想非常简单: 首先,用fopen函数建立一个新的二进制文件并先写入捆绑程序的数据和文件长度; 其次,写入要捆绑的第一个文件的数据和文件长度; 然后,写入要捆绑的第二个文件的数据和文件长度; …… 最后,写入要捆绑的最后一个文件的数据(不需要长度了,因为长度是为了给各个exe文件定位)。 执行合并文件时,将上面步骤倒过来即可: 首先,打开捆绑程序文件,得到文件长度,将文件指针定位到第一个被捆绑文件的位置; 其次,读取第一个捆绑文件的长度和数据,将数据写入第一个新建文件中。同样的读取第二个捆绑文件的长度和数据,将数据写入第二个新建文件中,……读取最后一个捆绑文件的数据,写入最后一个新建文件中。 然后,用Create_Process函数运行这些可执行文件; 最后,再删除这些可执行文件即可。 程序代码 1. 利用AppWizard生成一个基于对话框的工程,其他步骤均采用VC的默认配置。 2. 由于代码较长,这里只列出主要的函数代码,即捆绑文件的代码和释放文件的代码,其他的程序部分请读者参看程序。 //绑定多个文件为一个可执行文件 bool CBindFileDlg::Bind_Files() { FILE* myself; //自身文件 FILE* out; //最终合成文件 FILE* in; //待绑定文件 nt bytesin; nt totalbytes = 0; struct _stat ST; unsigned int finder = 0 unsigned int i, k; int l=1; //状态显示 char buff[20]; //状态显示 his_name = strFirstFilePath; //第一个绑定的文件名 _stat(my_name, ST); modify_data.my_length = ST.st_size; if (modify_data.my_length == 0) { MessageBox(绑定文件,自身文件长度为零!,错误); return false; } buf = (BYTE *)malloc(modify_data.my_length); if (buf == NULL) { MessageBox(绑定文件,分配自身文件长度失败!,错误); return false; } myself = fopen(my_name, rb); //打开自身文件 if (myself == NULL) { free(buf); MessageBox(绑定文件,打开自身文件时失败!,错误); return false; } bytesin = fread(buf, 1, modify_data.my_length, myself); fclose(myself); if (bytesin != modify_data.my_length) { free(buf); MessageBox(绑定文件,全读取自身文件失败!,错误); return false; } for (i = 0; i modify_data.my_length - sizeof(finder); i += sizeof(finder)) { for (k = 0; k sizeof(finder); k++) { if (buf[i+k] != ((BYTE*)finder)[k]) break; } if (k == sizeof(finder)) //定位并保存自身数据文件大小 { memcpy(buf+ i, modify_data, sizeof(modify_data)); break; } } if (i = modify_data.my_length - sizeof(finder)) { free(buf); MessageBox(绑定文件,定位自身文件失败!,

文档评论(0)

奋斗不止500年 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档