您的位置:首页 > Web前端 > JavaScript

Javascript写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)

2007-02-09 00:00 507 查看
最近我的共享目录里面所有exe文件都被病毒感染,上网一查才知道是“logo1_.exe”这个咚咚搞的鬼。网上对这个病毒的危害性评价得很高,认为只要中了病毒,整台机器都只能“Format”了。其原因大概就是因为所有应用程序都被感染,运行任何程序都回使病毒“重生”。我使用“卡巴司机”杀毒,结果提示无法清除,将我整个exe文件给删了。郁闷中,自己动手写了这个咚咚来清除已感染程序里的的病毒。

中了“logo1_.exe”病毒请上网查找相关清除方法,本工具只是清除被感染文件里面的病毒,因没有太多时间,没做注册表自动恢复功能;)

中毒的现象:会在所有含有exe文件的目录下建立一个隐藏的“_desktop.ini”文件,里面记录了病毒感染的日期。如果删除该文件,病毒会重复感染已感染的应用程序并重新生成“_desktop.ini”文件;很多被病毒感染的应用程序会出现很模糊的ICO图标。

网上传说该病毒每三分钟活动一次哦,还说新装的机器在带毒的网络工作,三分钟之内就会被遭毒手,装新系统的朋友小心了。

为防止不小心的朋友运行病毒文件,我已经将“.exe”后缀去掉了。大家可以添加“.exe”后缀名对比杀毒前和杀毒后的ICO图标变换情况。
再次提醒:未使用本工具清除“病毒样本”里的病毒之前,千万别运行“病毒样本”程序。否则马上中标 :D
保存为:Logo1_Kill.js运行即可
TaskKill("logo1_.exe"); 
TaskKill("rundl132.exe"); 
var window, lstKill, pnlScan, form1 = new Form; 
form1.Run(); 
function Form() 
{ 
    var IE = WSH.GetObject("", "InternetExplorer.Application"); 
    IE.ToolBar = 0; 
    IE.StatusBar = 0; 
    IE.Width = 350; 
    IE.Height = 360; 
    IE.Navigate("about:blank"); 
    var document = IE.document; 
    document.body.scroll = "no"; 
    document.body.style.font = "9pt 宋体"; 
    window = document.frames; 
    document.body.charset = "gb2312"; 
    document.bgColor = "menu"; 
    document.body.style.border = 0; 
    document.title = "Logo1_.exe 病毒清除工具"; 
    this.Run = function() 
    { 
        var btnKill = new Button("清除病毒"); 
        var filebox = new FileBox; 
        var grpScan = new Group; 
        var grpKill = new Group("快速清除病毒"); 
        var dirPath = new TextBox; 
        var btnScan = new Button("开始扫描"); 
        pnlScan = new Panel; 
        lstKill = new ListBox; 
        dirPath.value = "D:\\"; 
        grpScan.Text.data = "目录扫描"; 
        pnlScan.Text.data = "准备就绪"; 
        lstKill.style.width = "100%"; 
        lstKill.style.height = "2in"; 
        AddControl(grpKill); 
        grpKill.Add(filebox); 
        grpKill.Add(btnKill); 
        AddControl(grpScan); 
        grpScan.Add(dirPath); 
        grpScan.Add(btnScan); 
        grpScan.Add(pnlScan); 
        grpScan.Add(lstKill); 
        btnKill.onclick = btnKill_Clicked; 
        btnScan.onclick = btnScan_Clicked; 
        IE.Visible = true; 
        try 
        { 
            while(!window.closed) 
            { 
                if(btnScan.disabled) 
                { 
                    try 
                    { 
                        var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
                        var Folder = FSO.getFolder(dirPath.value); 
                        FolderList(Folder); 
                    } 
                    catch(err) 
                    { 
                        window.alert(err.message); 
                    } 
                    btnScan.disabled = false; 
                    window.alert("扫描完成。"); 
                } 
                WSH.Sleep(1000); 
            } 
        } 
        catch(err) 
        {} 
        function btnKill_Clicked() 
        { 
            var FilePath = filebox.value; 
            if(FilePath && Check(FilePath)) 
            { 
                if(window.confirm("发现病毒,是否清除?")) 
                { 
                    try 
                    { 
                        Backup(FilePath); 
                    } 
                    catch(Err){} 
                    while(Check(FilePath)) Clear(FilePath); 
                    window.alert("清除了一个病毒。"); 
                } 
            } 
            else 
            { 
                window.alert("未发现病毒。"); 
            } 
        } 
        function btnScan_Clicked() 
        { 
            while(lstKill.options.length) lstKill.options.remove(0); 
            btnScan.disabled = true; 
        } 
    } 
    function AddControl(obj) 
    { 
        document.body.appendChild(obj); 
    } 
    function FileBox() 
    { 
        var obj = document.createElement("input"); 
        obj.type = "file"; 
        return obj; 
    } 
    function Button(text) 
    { 
        var obj = document.createElement("input"); 
        obj.type = "button"; 
        obj.value = text; 
        return obj; 
    } 
    function TextBox() 
    { 
        return document.createElement("input"); 
    } 
    function Panel() 
    { 
        var Div = document.createElement("div"); 
        Div.Add = function(Obj) 
        { 
            this.appendChild(Obj); 
        } 
        Div.Text = document.createTextNode(); 
        Div.Add(Div.Text); 
        Div.style.overflow = "hidden"; 
        return Div; 
    } 
    function Group(Title) 
    { 
        var fieldset = document.createElement("fieldset"); 
        var legend = document.createElement("legend"); 
        fieldset.Text = document.createTextNode(); 
        fieldset.Text.data = Title; 
        legend.appendChild(fieldset.Text);         
        fieldset.Add = function(Obj) 
        { 
            this.appendChild(Obj); 
        } 
        fieldset.Add(legend); 
        fieldset.style.marginBottom = "2mm"; 
        return fieldset; 
    } 
    function ListBox() 
    { 
        var select = document.createElement("select"); 
        select.multiple = true; 
        select.Add = function(text) 
        { 
            var opt = window.Option(text); 
            select.options.add(opt); 
        } 
        return select; 
    } 
} 
function TaskKill(Process) 
{ 
    var WinMgmts = GetObject("WinMgmts://127.0.0.1"); 
    var ProcList = WinMgmts.ExecQuery("select * from win32_process"); 
    var ProcList = new Enumerator(ProcList); 
    while(!ProcList.atEnd()) 
    { 
        if(ProcList.item().Name.toLowerCase() == Process.toLowerCase()) 
            ProcList.item().terminate(); 
        ProcList.moveNext(); 
    } 
} 
function Check(SourcePath) 
{ 
    var Code = "MZKERNEL32.DLL\x00\x00LoadLibraryA\x00\x00\x00\x00GetProcAddress\x00\x00|\x00\x00BKwdwing@"; 
    var Stream = new ActiveXObject("Adodb.Stream"); 
    Stream.Open(); 
    Stream.Charset = "gb2312"; 
    Stream.LoadFromFile(SourcePath); 
    var Body = Stream.ReadText(60); 
    Stream.Close(); 
    Body = Body.replace(/[\s\S]\x00\x00BK/, "|\x00\x00BK"); 
    return Body == Code; 
} 
function Clear(SourcePath) 
{ 
    var Stream = new ActiveXObject("Adodb.Stream"); 
    Stream.Open(); 
    Stream.LoadFromFile(SourcePath); 
    var Body = Stream.ReadText(500 * 1024); 
    Stream.Close(); 
    var Match = ""; 
    while(Match.length < 21) Match += "\x00"; 
    Match += "MZ"; 
    var C = 0, Temp = ""; 
    while(C< Body.length && Temp.indexOf(Match) <0) 
    { 
        var Uni = Body.substr(C, 1000); 
        C += 1000; 
        Temp += Decode(Uni); 
    } 
    var Position = Temp.indexOf(Match) + 21; 
    Stream.Type = 1; 
    Stream.Open(); 
    Stream.LoadFromFile(SourcePath); 
    Stream.Position = Position; 
    Body = Stream.Read(); 
    Stream.Position = 0; 
    Stream.SetEOS(); 
    Stream.Write(Body); 
    Stream.SaveToFile(SourcePath, 2); 
    Stream.Close(); 
} 
function Backup(SourcePath) 
{ 
    var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var File = FSO.GetFile(SourcePath); 
    File.Copy(SourcePath + ".logo1_vir", false); 
} 
function Decode(text) 
{ 
    return text.replace(/([\u0000-\uffff])/g, function($1) 
    { 
        var uni = $1.charCodeAt(0).toString(16); 
        while(uni.length < 4) uni = "0" + uni; 
        uni = uni.replace(/(\w{2})(\w{2})/g, "%$2%$1"); 
        return unescape(uni); 
    }); 
} 
function ScanFiles(Folder) 
{ 
    var Files = new Enumerator(Folder.Files); 
    while(!Files.atEnd()) 
    { 
        if(Files.item().Name.slice(-4).toLowerCase() == ".exe") 
        { 
            var Path = Files.item().Path; 
            pnlScan.Text.data = Path; 
            if(Check(Path)) 
            { 
                try 
                { 
                    Backup(Path); 
                } 
                catch(err){} 
                while(Check(Path)) Clear(Path); 
                lstKill.Add(Path + " (OK)"); 
            } 
            WSH.Sleep(50); 
        } 
        Files.moveNext(); 
    } 
} 
function FolderList(Folder) 
{ 
    ScanFiles(Folder); 
    var Folders = new Enumerator(Folder.SubFolders); 
    WSH.Sleep(50); 
    while(!Folders.atEnd()) 
    { 
        if(Folders.item().Path.match(/\\/g).length > 255) continue; 
        pnlScan.Text.data = Folders.item().Path + "\\"; 
        FolderList(Folders.item()); 
        Folders.moveNext(); 
    } 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: