目录
一、简介:
1.1、简述
将木马与其他文件合成为一个可执行文件从而迷惑敌人。许多木马已经自带了文件捆绑功能,也可以使用大数人使用的文件捆绑器,将多个文件合成为一个文件,从而使木马不被发现,文件捆绑器大多数人都会用,讲讲文件捆绑器的编写。
将多个文件合并成一个最终可执行文件, 运行这个最终合成文件后, 就相当运行了合并前的多个文件。这种程序在木马程序合并中会经常用到,就以一个文件捆绑器的例子代码
1.2、构成思想:
在合并文件时, 建立一个新的二进制文件,先写入你的自身捆绑程序的数据和文件长度,再写入你要捆绑的第一个文件的数据和文件长度,然后再直接写入你要捆绑的第二个文件的数据和文件长度……最后可直接写入你要捆绑的最后一个文件的数据(不需文件长度)。
分解释放最终合成文件时, 也就是将上面的方法倒过来执行
打开最终合成文件,读取原自身捆绑程序文件长度,将文件指针移到自身捆绑程序数据后,读取第一个被绑定文件的长度,接着读取其长度的文件数据并写入到“ 新建文件l1” 中,再读取第二个被绑定文件的长度,接着读取其长度的数据并写入到“ 新建文件2 ” 中……直到最后直接读取最后一个被绑定文件的数据并将它写入到最后一个新建文件中即可。
二、实现
2.1、捆绑多个文件为一个可执行程序
首先得到自身捆绑程序的文件长度和第一个要捆绑文件的文件长度,枚举第一个要捆绑文件有无图标, 有的话就用它作为最终生成文件的图标, 否则用自身捆绑程序所带默认图标做最终生成文件的图标。在新建二进制文件中写入自身捆绑程序数据及其文件长度, 再写入第一个要捆绑文件的数据及其文件长度, 最后直接写入第二个文件的数据即可。
合并程序函数的具体代码实现如下:
2.2、释放最终合成文件并运行
打开自身文件, 从中得到自身捆绑程序的文件长度, 便可将文件指针定位到第一个被捆绑文件的位置,读取其文件长度及其数据,将读出数据写入第一个新建文件中。同样,通过已读取的自身捆绑程序文件长度和第一个被捆绑文件的文件长度加上保存这两个文件长度值的字节数,即可准确定
位第二个被捆绑文件的位置,读取其数据,写入到第二个新建文件中。同时,运行这两个文件,最后再删除这两个文件既可。
释放最终合成文件的代码具体实现如下:
2.3、判断何时捆绑、分解程序
由于本程序是将自身捆绑程序作为文件头将要绑定文件附加其后的方式生成最终合成文件的。所以, 只要知道自身捆绑程序的文件长度, 再在初始化对话框函数OnlnitDialog()加以判断即可知道是否是最终合成文件(要不要释放内部绑定文件)。本例程用VC6. 0 采用静态连接方式生成的
Release版, 文件大小为184KB 。
判断是捆绑还是释放文件的代码具体实现如下: