如何绑定文件?

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:12:04
小弟没黑过别人,不知道如何绑定木马,现在有几个文件有特殊用途,想绑在一起,可是不会,用脖子想了一天,原理应该和绑木马是一样的,请高手指教,我会努力,争取花最短的时间学会的。

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

基本组成思想:其实,其中的构成思想非常简单。建立一个新的二进制文件,先写入你的捆绑程序的数据和其文件长度,再写入你要捆绑的第一个文件的数据和其文件长度,后再直接写入你要捆绑的第二个文件的数据和文件长度……,最后就可直接写入你要捆绑的最后一个文件的数据(不需其文件长度)。最终文件被执行时,也就是将上面的方法思想倒过来即可。(下面实例仅告诉你如何实现二个文件的捆绑,至于多个文件的捆绑,读者只需略加改动既可,详情请细看下载后的实例代码。)
下面我来讲讲如何具体将其来实现:
1、捆绑多个文件为一个可执行程序
先得到自身捆绑程序的文件长度和第一个要捆绑文件的文件长度,枚举第一个要捆绑文件有无图标,有的话就用它做为最终生成文件的图标,否则用自身捆绑程序所带默认图标做最终生成文件的图标。在新建二进制文件中写入自身捆绑程序的数据和其文件长度,再写入第一个要捆绑文件的数据及其文件长度,最后直接写入第二个文件的数据既可。
捆绑涵数代码实现如下:
//绑定多个文件为一个可执行文件
bool CBindFileDlg::Bind_Files()
{
FILE* myself; //自身文件
FILE* out; //最终合成文件
FILE* in; //待绑定文件
int bytesin;
int totalbytes = 0;
struct _stat ST;
unsigned int finder = 0x12345678;
unsigned int i, k;
int l=1; //状态显示
char buff[20]; //状态显示

his_name = strFirstFilePath; //第一个绑定的文件名

_stat(my_name, &ST);