如何将多个文件捆绑成一个可执行文件

将多个文件合并成一个最终可执行文件,运行这个最终合成文件后,就相当于运行了合并前的多个文件。这种程序在木马程序合并中会经常用到,你想知道它是怎么用程序实现的么?下面我就拿我用VC6.0做的一个文件捆绑器的例子代码来告诉你:

   基本构成思想:其实,其中的构成思想非常简单。合并文件时:建立一个新的二进制文件,先写入你的自身捆绑程序的数据和其文件长度,再写入你要捆绑的第一个文件的数据和其文件长度,后再直接写入你要捆绑的第二个文件的数据和文件长度……,最后可直接写入你要捆绑的最后一个文件的数据(不需其文件长度)。分解释放最终合成文件时,也就是将上面的方法思想倒过来既可:打开最终合成文件,读取源自身捆绑程序文件长度,将文件指针移到自身捆绑程序数据后,读取第一个被绑定文件的长度,接着读取其长度的文件数据并写入到一新建文件1中,再读取第二个被绑定文件的长度,接着读取其长度的数据并写入到新建文件2中……,直到最后直接读取最后一个被绑定文件的数据并将其写入到最后一个新建文件中既可。(下面实例仅告诉你如何实现二个文件的捆绑,至于多个文件的捆绑,读者只需略加改动既可,详情请查看下载后的实例代码。)

下面我来讲讲文件捆绑最核心的部分,以及如何具体将其用代码来实现的方法:

1、捆绑多个文件为一个可执行程序

先得到自身捆绑程序的文件长度和第一个要捆绑文件的文件长度,枚举第一个要捆绑文件有无图标,有的话就用它做为最终生成文件的图标,否则用自身捆绑程序所带默认图标做最终生成文件的图标。在新建二进制文件中写入自身捆绑程序的数据和其文件长度,再写入第一个要捆绑文件的数据及其文件长度,最后直接写入第二个文件的数据既可。

时间: 2024-08-03 15:18:21

如何将多个文件捆绑成一个可执行文件的相关文章

从零开始玩编程系列:文件捆绑器

  将多个文件合并成一个最终可执行文件,运行这个最终合成文件后,就相当于运行了合并前的多个文件,这种程序在木马或后门程序合并中会经常用到,你想知道它是怎么用程序实现的么?下面我就用VC6做的一个文件捆绑器的例子来告诉你. 其实文件捆绑器的构成思想非常简单:合并文件时,建立一个新的二进制文件,先写入你的自身捆绑程序的数据和文件长度,再写入你要捆绑的第一个文件的数据和其文件长度,跟着写入你要捆绑的第二个文件的数据和文件长度--最后直接写入你要捆绑的最后一个文件的数据(不需其文件长度).分解释放最终合

net snmp-net-snmp中通过subagent方法,如何把多个Table编译成一个可执行文件?

问题描述 net-snmp中通过subagent方法,如何把多个Table编译成一个可执行文件? net-snmp中生成了多个XXX_Table.c和 XXX_Table.h的文件,这些代码都已经写好了.现在通过subagent的方法,想把这些表编译到一个文件来执行(运行该可执行几个Table表都能处理),我按照网上的方法: #include <net-snmp/net-snmp-config.h> #include <net-snmp/net-snmp-includes.h> #

在C#中如何将C语言编写的cpp文件编译为exe可执行文件

问题描述 由于老师的要求,在C语言编完主程序后需要c#搭建个界面.现在我有一个cpp源程序代码,请教在c#中如何实现点击一个按钮将其编译链接为exe.方便利用System.Diagnostics.Process.Start直接调用.初学c#,希望大家能具体讲讲.值的注意的是,我的C#平台仅为了实现功能的整合,所以把c转换为dll调用的方法不考虑 解决方案 解决方案二:功能的整合为什么要编译C的源码呢?难道你想做C的编译器吗?如果只是做界面的话把C编译成动态链接库用C#调用就可以了解决方案三:引用

关于C++头文件与cpp文件的疑问

问题描述 关于C++头文件与cpp文件的疑问 http://www.cnblogs.com/laojie4321/archive/2012/03/30/2425015.html 我从上面的网站中看到这么一段话 如果在头文件中实现一个函数体,那么如果在多个C文件中引用它,而且又同时编译多个C文件,将其生成的目标文件连接成一个可执行文件,在每个引用此头文件的C文件所生成的目标文件中,都有一份这个函数的代码,如果这段函数又没有定义成局部函数,那么在连接时,就会发现多个相同的函数,就会报错 然后我自己测

ASP.NET MVC中利用脚本优化提高页面加载速度:

在这里我们说一下脚本优化的三个方法: 一.在我们做Web开发的时候,当我们引用Js文件的时候,我们一般会将js文件放在文档的head标签中,这时当页面加载的时候,浏览器会按着由上到下的顺序,当浏览器遇到script标签时,它会阻止其他内容的下载,知道他检索完整个脚本,这样会减慢页面加载速度,因此,script标签应该尽可能的放到页面的底部(仅仅位于body结束标签之前)就会产生很好的用户体验. 二.另一种减少页面加载时间的技术就是精简自定义脚本.比如我们经常用到的jquery.validate.

《C程序设计新思维》一1.4 使用Makefile

1.4 使用Makefile makefile提供一个解决所有以上这些麻烦的方案.它基本上可以看作一组有组织的变量和shell脚本.POSIX标准的make程序输入makefile作为指令和变量,然后自动化处理那些冗长繁琐的命令行.在这部分讲解之后,就没有什么必要去直接调用编译器了. 在"3.2 makefile还是shell脚本"中,会讲述关于makefile的更多细节:这里,先给出一个最小的.实用的,并且能够编译一个依赖于一个库的基本程序的makefile: 用法: 曾经的用法:将

GNU make 指南

 翻译: 哈少     译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法.而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具.如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值.也许这么说有点儿偏激,但 make 实在是应该用在任何稍具规模的程序中的.希望本文可以为中国的 Unix 编程初学者提供一点儿有用的资料.中国的 Linux 用户除了学会安装红帽子以外,

拓展:汇编语言的子程序

一个近(near)调用的程序 一个简单的包含子程序的汇编程序是: ; 要设置栈段,以便于call和ret指令使用 assume cs:code, ss:stack stack segment db 16 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ax,1000 call s ;调用子程序 mov ax,4c00h int 21h s: add ax,ax ;子程序开始 ret ;子程序返

Python之路【2】:Python基础

入门拾遗 一.作用域 只要变量在内存中就能被调用!但是(函数的栈有点区别) 对于变量的作用域,执行声明并在内存中存在,如果变量在内存中存在就可以被调用. 1 if 1==1: 2 name = 'tianshuai' 3 print name 所以下面的说法是不对的: 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 1 result = 值1 if 条件 else 值2 例子: 1 name = raw_input("please input your name: &q