朋友们帮忙分析一下这段ANYCOM代码
我是小白,没有什么编程基础,接到一任务,需要分析这段代码给别人讲,麻烦大家帮下忙,最好能说细致一些。不知道发错地方没有~ANYCOM的代码如下:
/*Program ANYCOM.C
功能:
全自动分析后附式COM文件型病毒杀毒关键性参数
执行格式:ANYCOM<文件名1><文件名2>*/
#define COM_LEN 0x8000
/*本程序所分析染毒文件的最大长度*/
#define COMHEAD
50
/*病毒可能隐藏代码的最大长度*/
# define VCODE_LEN 10
/*病毒特征串长度*/
#include “stdio.h”
FILE *fp1,*fp2,*fp3;
unsigned int fp1_len,fp2_len,i,j;
unsigned char nvcom[COMHEAD],vcom[COM_LEN];
struct comvir_struct {
unsigned int vir_len;/*病毒的长度*/
unsigned char vcode[VCODE_LEN];/*病毒的特征搜索字符串*/
unsigned int mov_len;/*原COM文件头的代码被病毒所隐藏的字节数*/
unsigned int mov_off;/*病毒所隐藏的代码相对于染毒文件末尾的偏移值*/
}comVIR;
main(int argc,char * argv[])
{fp1=fopen(argv[1],”rb+”);
i=fread(nvcom,COMHEAD,1,fp1);
nvcom[0]=0xe9;
fseek(fp1,0,SEEK_END);
fp1_len=ftell(fp1);
fp2=fopen(argv[2],”rb+”);
i=fread(vcom,COMHEAD,1,fp2);
fseek(fp2,0,SEEK_END);
fp2_len=ftell(fp2);
comVIR.vir_len=fp2_len-fp1_len;
i=fseek(fp2,fp1_len,SEEK_SET);
i=ftell(fp2);
i=fread(comVIR.vcode,VCODE_LEN,1,fp2);
for(i=COMHEAD-1;i>0;i--)
{
for(j=0;j<comVIR.mov_len;j++)
if(vcom[i+j]!=nvcom[j]) break;
if(j==comVIR.mov_len)break;
}
if(i)
comVIR.mov_off=fp2_len-i-j+3;
else
{printf(“Anylize failed!”);exit(0);}
fp3=fopen(“VIRINFO.DAT”,”wb”);
fwrite(&comVIR,sizeof(comvir),1,fp3);
printf(“病毒长度:%d字节\n”,comVIR.vir_len);
printf(“病毒特征串”);
for(i=0;i<10;i++) printf(“%xH”,comVIR.vcode);
printf(“\n 病毒隐藏原COM文件头代码:%d字节\n”,comVIR.mov_len);
printf(“被隐藏病毒代码相对于染毒文件末尾偏移值:%d字节\n”,comVIR.mov_off);
printf(“所有杀毒关键性参数已存入VIRINFO.DAT文件中!”);
}
补充:云计算 , 云安全