65.9K
CodeProject 正在变化。 阅读更多。
Home

soundmix.exe杀毒软件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.32/5 (11投票s)

2009年5月10日

CPOL

2分钟阅读

viewsIcon

44495

downloadIcon

723

一个非常简单的方法可以移除电脑中的soundmix.exe病毒。

引言

这是一个非常简单的方法,只需三个步骤即可移除Soundmix病毒。当我发现我需要支付29.99美元购买杀毒软件,而且杀毒软件无法修复病毒的后果时,我开始思考我能做些什么,然后根据我在这个过程中学到的知识写了这篇文章。

背景

这种病毒针对USB可移动闪存。每当你插入U盘时,病毒都会创建一个autorun.inf文件并创建一个名为“RECYCLER”的文件夹,然后将自身复制到其中并隐藏所有这些文件。每次你将其插入另一台电脑时,它都会自动运行病毒并感染电脑以创建这些文件。

%System%\dllcache\zipexr.dll 
%System%\soundmix.exe 

这种病毒有两个生命周期:一个是无害的,只会感染其他电脑并创建许多带有文件夹图标的有害exe文件,但如果你双击它,它就是一个致命病毒。它会使你的电脑重启,每次你的Windows登录时,它都会执行并导致重启。糟糕的体验!

soundmix.exe会在Windows shell系统中注入一些代码,这样每次Windows想要运行应用程序时,soundmix.exe都会干扰并执行该过程,因此如果你删除它,你就无法运行任何.exe文件或应用程序。你需要一个工具来修复这个问题。我在网上找到了一些东西,一个COM应用程序;我不知道它做了什么,但它有效!

第三步是删除通过你的电脑和你的目录名称传播的致命病毒,所以我们必须搜索你的硬盘驱动器中大小相同的应用程序并删除它们。

还有一件事,你将无法看到隐藏文件;如果有人知道如何修复它,请发表评论。

使用代码

我做的是用三个简单的步骤编写了一个非常简单的应用程序。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using System.IO;

namespace WindowsFormsApplication1
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            DirectoryInfo di = new DirectoryInfo(textBox1.Text);
            FileInfo [] fii = di.GetFiles();

            for (int i = 0; i < fii.Length; i++)
            {
                fii[i].Attributes = FileAttributes.Normal;
            }

            DirectoryInfo [] dii = di.GetDirectories();

            for (int i = 0; i < dii.Length; i++)
            {
                if (dii[i].Name == "RECYCLER")
                {
                    dii[i].Attributes = FileAttributes.Normal;
                    fii = dii[i].GetFiles();

                    for (int ii = 0; ii < fii.Length; ii++)
                    {
                        fii[ii].Attributes = FileAttributes.Normal;
                        fii[ii].Delete();
                    }
                    dii[i].Delete();
                }
            }
 
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcesses();

            for (int i = 0; i < p.Length; i++)
            {
                if (p[i].ProcessName == "soundmix")
                {
                    p[i].Kill();
                    p[i].WaitForExit();

                    System.IO.FileInfo fi = new 
                      System.IO.FileInfo(@"C:\WINDOWS\system32\soundmix.exe");
                    fi.Attributes = System.IO.FileAttributes.Normal;
                    fi.Delete();
                    fi = new System.IO.FileInfo(@"C:\WINDOWS\system32\dllcache\zipexr.dll");
                    fi.Attributes = System.IO.FileAttributes.Normal;
                    fi.Delete();
                    System.IO.File.Delete(@"C:\WINDOWS\system32\dllcache\zipexr.dll");
                    System.IO.File.Delete(@"C:\WINDOWS\system32\soundmix.exe");
                }
            }
            //System.IO.File.Delete(@"C:\WINDOWS\system32\dllcache\zipexr.dll");
        }

        private void process1_Exited(object sender, EventArgs e)
        {
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // im not responsible for this .exe contend
            string s = Application.StartupPath + "\\exefix_xp.com";

            if (File.Exists(s))
                System.Diagnostics.Process.Start(s);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            recursiveScan(new DirectoryInfo(@"D:\"));
        }

        public void recursiveScan(DirectoryInfo di)
        {
            DirectoryInfo [] dii = di.GetDirectories();
            for (int ii = 0; ii < dii.Length; ii++)
            {
                if (dii[ii].Name == "System Volume Information")
                    continue;

                FileInfo[] fi = dii[ii].GetFiles("*.exe", 
                                SearchOption.AllDirectories);

                long size = (long)numericUpDown1.Value;

                for (int i = 0; i < fi.Length; i++)
                {
                    if (fi[i].Length == size)
                    {
                        fi[i].Attributes = FileAttributes.Normal;
                        fi[i].Delete();
                    }
                }
            }
        }
    }
}
© . All rights reserved.