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


Posted in Javascript onFebruary 09, 2007

最近我的共享目录里面所有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(); 
    } 
}
Javascript 相关文章推荐
jQuery 开天辟地入门篇一
Dec 09 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 Javascript
微信小程序 数组中的push与concat的区别
Jan 05 Javascript
JavaScript函数表达式详解及实例
May 05 Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
vue路由拦截及页面跳转的设置方法
May 24 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
Dec 07 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
Feb 27 Javascript
控制打印时页眉角的代码
Feb 08 #Javascript
如何用javascript去掉字符串里的所有空格
Feb 08 #Javascript
JavaScript使用prototype定义对象类型
Feb 07 #Javascript
Javascript实现的分页函数
Feb 07 #Javascript
[转]JS宝典学习笔记
Feb 07 #Javascript
HTML页面如何象ASP一样接受参数
Feb 07 #Javascript
DOM相关内容速查手册
Feb 07 #Javascript
You might like
用header 发送cookie的php代码
2007/03/16 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
Symfony生成二维码的方法
2016/02/04 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
Node.js + express基本用法教程
2019/03/14 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
python随机生成指定长度密码的方法
2015/04/04 Python
python optparse模块使用实例
2015/04/09 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python中树与树的表示知识点总结
2019/09/14 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
仓库管理计划书
2014/05/04 职场文书
学校文明单位申报材料
2014/05/06 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
个人培训总结
2015/03/05 职场文书
JavaScript获取URL参数的方法分享
2022/04/07 Javascript