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 相关文章推荐
input链接页面、打开新网页等等的具体实现
Dec 30 Javascript
javascript实现iframe框架延时加载的方法
Oct 30 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
May 21 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
JS浏览器BOM常见操作实例详解
Apr 27 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
Sep 18 Javascript
openlayers实现地图弹窗
Sep 25 Javascript
微信小程序实现音乐播放页面布局
Dec 11 Javascript
ant design vue的form表单取值方法
Jun 01 Vue.js
控制打印时页眉角的代码
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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
js 学习笔记(三)
2009/12/29 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
javascript实现微信分享
2014/12/23 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
python内存动态分配过程详解
2019/07/15 Python
基于numpy中的expand_dims函数用法
2019/12/18 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
mysql 索引合并的使用
2021/08/30 MySQL
java项目构建Gradle的使用教程
2022/03/24 Java/Android