帮看看这个函数

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);
}
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouhuahai 2005-09-06
  • 打赏
  • 举报
回复
就是把那4个文件加在install.exe尾端吧?

可以这么说吧,我对PE格式不太熟.
Gener 2005-09-06
  • 打赏
  • 举报
回复
源程序是install.c

...
cmdline = GetCommandLine();//获取程序文件名
strchr(cmdline+1,'"')[0] = 0;//去掉双引号
ExtractFile(cmdline+1);
...

编译出来的是install.exe.

就是把那4个文件加在install.exe尾端吧?像以资源的形式加载一样.或者可以理解为增加可执行程序的PE节.我是这样理解的.对不对?

等会给分.

zhouhuahai 2005-09-06
  • 打赏
  • 举报
回复
大意是这样:
void ExtractFile(char *sourcefile)
此函数接收一个输入文件名.分别对:
ultimateinjecttest.exe
server.exe
tunnel.dll
remote.dll
这四个文件做以下操作:

把输入文件的第offset开始的10个字节的内容(下一个文件长度)复制到sizebuf中.并把其(下一个文件长度)赋给bind_fin 和bind_filesize .然后再将输入文件的后续内容(共下一个文件长度个字节)写入到上面所说的四个文件之一.至于读内容,是采取分页来读的.

总的来看,接收的输入文件的格式是这样:
从第32768字节开始:
1.10个字节以字符串形式存放某个文件长度(那四个文件之一)
2.那四个文件之一的内容.
3.如果不是第四个文件,则又转到1

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧