写这个程序前先介绍一下原理。lovegate的病毒把其中一些 exe文件 改为 zmx文件,然后自身生成一个与此同名的exe文件。例如在 c:\abc 目录下有一个文件 vb.exe ,病毒会把这个好的文件改成 vb.zmx 文件,并且把此文件属性改为系统隐藏属性,同时在这个目录下生成一个病毒自己的文件 "vb.exe" 。
也就是说中毒后的c盘的abc目录下有两个文件:vb.exe(病毒自己的文件)、vb.zmx(文件属性为系统隐藏属性)。我想做到以下功能:
遍历搜索指定路径,找出所有zmx文件;
一遇到有zmx文件,立刻把与此文件同名的exe文件先删掉;
然后把此zmx文件改为exe文件;
再把此文件属性改为 非系统属性、非隐藏属性。
完毕。
我知道功能算比较简单的,也许有些大侠不屑一顾,但是小弟我很久没写vb了,希望大家帮忙给出这个思路和部分代码。拜谢各位了!!!!!我非常焦急!!!!!

解决方案 »

  1.   

    Sub Listfiles(ByVal mydir As String)
    Dim n As Integer, dirlevel As Integer, fname As String, dirlist() As String, num As Long
    num = 0
    mydir = IIf(Right(mydir, 1) = "\", mydir, mydir & "\")
    fname = Dir(mydir)
    Do While fname <> ""
        ChangerFile mydir & fname
        num = num + 1
        fname = Dir
        DoEvents
    Loop
    fname = LCase(Dir(mydir, vbDirectory))
    Do While fname <> ""
        If fname <> "." And fname <> ".." Then
            If GetAttr(mydir & fname) And vbDirectory Then
                dirlevel = dirlevel + 1
                ReDim Preserve dirlist(dirlevel)
                dirlist(dirlevel) = mydir & fname
            End If
        End If
        fname = Dir
        DoEvents
    Loop
    For n = 1 To dirlevel
        Listfiles dirlist(n) & "\"
    Next
    End SubSub ChangerFile(FileName As String)
    Dim tempa As String, tempb As String
    tempa = Mid(FileName, 1, Len(FileName) - 3)
    tempb = Mid(FileName, Len(FileName) - 2)
    If LCase(tempb) = "zmx" Then
        If Dir(tempa & "exe") <> "" Then
           Kill tempa & "exe"
           DoEvents
           Name FileName As tempa & "exe"
           DoEvents
           SetAttr tempa & "exe", vbNormal
        End If
    End If
    End SubPrivate Sub Command1_Click()
    Listfiles "f:\csdn"
    End Sub