写了个捆绑和分解的验证性代码,希望大家帮我看看
// exebind.cpp : 定义控制台应用程序的入口点。
//还需要另外一个附属exe文件,用于把捆绑的可执行文件分解出来.
#include "stdafx.h "
#include "windows.h "
#include "stdio.h "
#include "atlstr.h "
#include <sys/stat.h>
typedef struct tagMyBINDSTRUCT
{
char cFilenameHost[40]; // 宿主文件名.
char cFilenameClient[40]; // 被捆绑文件名.
char cFilenameUnbind[40];//解压缩程序名
DWORD nFileSizeUnbind;// 解压缩程序大小
DWORD nFileSizeHost; // 宿主文件长.
DWORD nFileSizeClient; // 被捆绑文件长.
DWORD nFileSizeBind; // 已捆绑文件长.
} MYBINDINFO;
int main(int argc,char* argv[])
{
MYBINDINFO bind;
memset(&bind,0,sizeof(MYBINDINFO));//IT IS IMPORTANT;
if(argc!=4)
{
printf( "the argument is error! ");
return 0;
}
else
printf( "the argument is right\n\r ");
//printf( "%s ",argv[2]);
CString strFilenameClient=argv[2];
strcpy(bind.cFilenameClient,strFilenameClient);
//bind.cFilenameClient[40]=strFilenameClient;
printf( "%s,there is aaa\n\r ",bind.cFilenameClient);
//bind.cFilenameHost[40]=*argv[1];//the next,i should print th strFilenameHost var.verify the kind of strFinenameHost.
CString strFilenameHost=argv[1];//bind.cFilenameHost;
strcpy(bind.cFilenameHost,strFilenameHost);
//bind.cFilenameUnbind[40]=*argv[3];
CString strFilenameUnbind=argv[3];
strcpy(bind.cFilenameUnbind,strFilenameUnbind);
CString strFileTemname= "tempfile.exe ";
struct _stat ST;
int error;
//DWORD dwError;
FILE* fpreadHost,*fpreadClient,*fpreadUnbind,*fpwriteTem;
error=_stat(strFilenameClient,&ST);
if(error!=0)
{
printf( "prg fail ,the error is %d\n ",GetLastError());
}
bind.nFileSizeClient=ST.st_size;
printf( "the file size is %d\n\r ",bind.nFileSizeClient);
_stat(strFilenameHost,&ST);
bind.nFileSizeHost=ST.st_size;
printf( "the file size is %d\n\r ",bind.nFileSizeHost);
_stat(strFilenameUnbind,&ST);
bind.nFileSizeUnbind=ST.st_size;
printf( "the file size is %d\n\r ",bind.nFileSizeUnbind);
bind.nFileSizeBind=bind.nFileSizeClient+bind.nFileSizeHost+bind.nFileSizeUnbind+sizeof(MYBINDINFO);
printf( "the finial size is %d\n\r ",bind.nFileSizeBind);
if((fpreadHost=fopen(strFilenameHost, "rb "))==NULL)
{
printf( "read host file fail! ");
return 0;
}
if((fpreadClient=fopen(strFilenameClient, "rb "))==NULL)
{
printf( "read client file fail ");
return 0;
}
if((fpreadUnbind=fopen(strFilenameUnbind, "rb "))==NULL)
{
printf( "read unbind file fail ");