页面加载中...

另辟蹊径-菜鸟也能打造IE保护器

日期:2008年5月9日 评论次数:No Comments » 浏览次数:

许多恶意程序都喜欢对IE进行修改操作,往往使IE很“受伤”。如果能自己动手设计一个IE保护器,就可以解除IE被非法修改的烦恼。提起编程,大家一定想起VC,VB,Delphi等专业开发工具,菜鸟们一定觉得编程很有难度。其实不然,我们可以另辟蹊径,不用学习高深的软件编程技术,只使用AutoHotKey这款免费的工具软件,就能设计出个性化的IE保护程序来。AutoHotKey自带功能强大的脚本编辑器,提供了大量的内置关键字和变量,通过编辑和运行简单的脚本,只需青轻轻点击热键,使许多繁琐的操作在瞬间完成。并且AutoHotKey提供了编译程序,让脚本程序编程可执行文件而独立运行。
本文就利用AutoHotKey设计了一个IE保护程序,程序运行后用户只需按下Alt+F1键,就能还你一个“干净”的IE,当然用户可以在此基础上更进一步加强其功能。该程序能实现对被修改IE的标题和首页、被禁用的IE选项菜单、被锁定的IE右键菜单、被禁用的IE查看源文件菜单、被禁用的IE地址栏等项进行恢复;删除IE多余的工具栏按钮、多余的IE右键菜单;解开被禁用的注册表编辑器;清空IE地址栏;删除Windows登录时弹出的信息窗口;恢复Outlook Express标题栏;解除对Windows开始菜单中的运行,文档,收藏夹,注销,关闭项的禁用;恢复IE的搜索引擎;清除IE分级密码;删除多余的启动项;恢复Hosts默认内容等。
初试手艺
打开Windows资源管理器,任选一个文件夹,在空白处点击右键,在弹出菜单中依次选择菜单“新建”→“AutoHotkey Script”,在当前路径下新建一个AutoHotKey脚本文件,假设将其改名为“实例.ahk”。在该文件的右键菜单中选中“Edit Script”,打开脚本编辑器。在脚本辑器窗口开头处按回车键另起一行,输入“#space::Run www.google.com”。这里的#号代表键盘上的Win键,Space表示空格键,::表示分隔符,Run表示执行后面的命令语句。保存后双击该文件,激活AutoHotKey主程序,同时按下Windows键和空格键,指定的网址“www.google.com”就打开了。一般来说,在AutoHotKey中字符键的名称(如A-Z,a-z,F1-F12等)和原字符相同,只是控制键比较特别,例如!表示ALT键等,在帮助文件中列出了详细的键位名称。
操作注册表
大家知道,IE的许多设置都保存在注册表中,网上许多修改IE的恶意程序无不“喜欢”对注册表下手,以达到破坏系统的目的。AutoHotKey提供了强大脚本编程语句,能轻松操作注册表。由于整个脚本程序比较长,这里列举一些有代表性的脚本段进行讲解。下面先列举一段简单的脚本,作用是修复被非法修改的IE标题栏和首页,以及清除添加在IE工具栏中的第三方按钮控件。结合脚本深入分析和操作注册表相关的语句。
!F1::
……
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, Software\Microsoft\Internet Explorer\Main, Window Title, Microsoft Internet Explorer
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, Software\Microsoft\Internet Explorer\Main, Start Page, about:blank
RegWrite, REG_SZ, HKEY_LOCAL_MACHINE, Software\Microsoft\Internet Explorer\Main, Default_Page_URL, about:blank
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\Main, Window Title, Microsoft Internet Explorer
RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\Main, Start Page, about:blank
;以上脚本将IE的标题和首页改成默认值
Loop, HKEY_LOCAL_MACHINE, Software\Microsoft\Internet Explorer\Extensions, 1, 1
{
if a_LoopRegType = key
RegDelete
}
MsgBox, IE多余工具栏按钮删除完成!
;删除IE多余的工具栏按钮
Loop, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\MenuExt, 1, 1
{
if a_LoopRegType = key
{RegRead, value
MsgBox, 4, , IE右键菜单-%a_LoopRegName%`n`n删除吗?
IfMsgBox, Yes,RegDelete
IfMsgBox, No,Continue
}

}
……
Return
值得说明的是,和IE设置紧密相关的注册表路径在网上很容易找到,这里就不多说了。其中!F1指的是Alt和F1的组合键,这里使用了块结构,块结构以热键开始,以Return结束,块结构的优点是可以将所有的脚本封装在一个热键中,这样,按下Alt+F1键,就执行所有的脚本语句了。AutoHotKey使用RegWrite语句来对注册表进行写操作。RegWrite,的语法格式是:“RegWrite, ValueType, RootKey, SubKey [, ValueName, Value]”。ValueType指的是写入注册表键值的类型,包括REG_SZ(字符串型)、REG_EXPAND_SZ(可扩充字符串值)、REG_MULTI_SZ(多字符串值)、REG_DWORD(Dword型)、REG_BINARY(二进制型)等。RootKey指注册表根键,包括HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CURRENT_USER,HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG等。SubKey指注册表的子键名称。ValueName指键值名。Value指键值。方括号内的内容可以忽略,如果忽略ValueName和Value,RegWrite将自动写入空值。可以看到,前5行脚本的作用是恢复IE的标题和首页为默认值。以分号起始的行是注释行,用于简单的功能说明。AutoHotKey使用Loop语句进行注册表的循环查询操作,其语法结构是:“Loop, RootKey [, Key, IncludeSubkeys?, Recurse?]”。其中的Key表示注册表子键,IncludeSubkeys?值设为0表示只循环Key中第一级的主键,为1表示循环Key中所有层次的主键,为2表示循环Key中所有层次的主键和键值。Recurse?为1表示对主键包含的具体键值进行循环查询。在Loop循环中用{}包裹的是一个整体脚本语句,每循环一次{}中的语句就执行一次。a_LoopRegType关键字表示循环查询到的主键的类型,这里的“if a_LoopRegType = key”指只对主键进行处理,对其中包含的键值不处理。在Loop循环中,直接使用RegDelete表示删除当前的主键。删除注册表主键和键值的语法格式是:RegDelete, RootKey, SubKey [, ValueName]。MsgBox关键字表示弹出对话框。
在MsgBox关键字后跟逗号和提示信息。这里采用交互式操作,让用户有选择是否删除的权利。
下面再列出一段脚本,以加深对注册表循环的认识,其作用是以交互形式删除IE中多余的右键菜单。
!F1::
……

Loop, HKEY_CURRENT_USER, Software\Microsoft\Internet Explorer\MenuExt, 1, 1
{ if a_LoopRegType = key
{RegRead, value
MsgBox, 4, , IE右键菜单-%a_LoopRegName%`n`n删除吗?
IfMsgBox, Yes,RegDelete
IfMsgBox, No,Continue
}
}
……
Return
在Loop循环中,直接使用RegRead关键字用于读取当前主键的名称,后跟逗号和变量,主键的名称保存在变量中。该变量可以不用定义直接使用。MsgBox的语法是:“MsgBox [, Options, Title, Text, Timeout]”,其中Options指提示框的类型,4表示提示框带有Yes/No按钮,具体的类型请看AutoHotKey帮助信息。Title表示提示框标题。Text表示提示内容。Timeout表示等待时间,在提示框中将出现倒计时。a_LoopRegName 指循环查询到的主键的名称,前后加上%表示代表具体值,`n 表示回车换行,在AutoHotKey脚本中,字符串之间允许直接连接,不用其它的连接符。IfMsgBox表示弹出提示框后,根据用户的选择执行命令。这里将依次列出IE右键菜单的名称,让用户选择是否删除,点击Yes按钮将删除菜单项,点击No按钮不删除。Continue关键字用于跳至下一级循环。下面继续列出一段主要的脚本,作用是防范恶意程序对启动项的修改,也是进行交互式操作,逐一列出启动项中的内容。
让用户选择是否删除,同时为防止恶意程序对Hosts文件进行修改达到劫持IE的目的,特别针对Hosts进行保护。
!F1::
……

Loop, HKEY_CURRENT_USER, SOFTWARE\Microsoft\Windows\CurrentVersion\Run, 1, 1
{
RegRead, value
MsgBox, 4, , 启动项-%a_LoopRegName% = %value% (%a_LoopRegType%)`n`n删除吗?
IfMsgBox, Yes,RegDelete
IfMsgBox, No,Continue
}
IfExist, %SystemRoot%\system32\drivers\etc\hosts
{FileDelete, %SystemRoot%\system32\drivers\etc\hosts
FileAppend, 127.0.0.1 localhost`n, %SystemRoot%\system32\drivers\etc\hosts
}
……
Return
因为启动项主要指具体的键值,因此a_LoopRegName指具体的键值名,value指具体的值,及执行文件的路径,a_LoopRegType指键值的类型,前后加上%表示变量代表的具体值。IfExist关键字用于判断指定文件是否存在,后跟逗号和文件路径,AutoHotKey支持环境变量,%SystemRoot%指系统所在路径,在Windows的CMD窗口中输入Set命令,可以看到所有的环境变量。FileDelete用于删除文件,后跟逗号和文件路径,FileAppend用于在文件中追加内容,如果文件不存在则建立文件。“127.0.0.1 localhost`n”指Hosts中默认的内容。这里表示先删除Hosts文件,再重建该文件,然后写入默认值。当然注册表具体的启动项不止一处,可参看具体的脚本程序,依次类推,可以对注册表中任意主键进行交互性删除。
制作可执行文件
AutoHotkey能将ahk格式的脚本文件做成EXE文件,便于用户携带和运行,在资源管理器中选中需要编译的脚本文件,在其右键菜单中选择“Compile Script”项,这样就能生成同名的Exe文件了。从而可以脱离AutoHotkey设计环境而独立运行,可以将其复制到优盘等移动设备上,不管走到那里,运行该执行文件,轻轻按下热键,就能轻松恢复IE设置了。

0 Comments.

Leave a Reply

回到顶部