查看: 2601|回复: 4
收起左侧

自编AVZ脚本修复安全模式

[复制链接]
libradohko
发表于 2008-10-28 22:09:04 | 显示全部楼层 |阅读模式
非常高兴已经有高人开始为AVZ写脚本了,谢谢syfwxmh。希望有更多的人能参与进来,用我们的知识与技术造福更多用户。

自编AVZ脚本修复安全模式

http://hi.baidu.com/kis2009


AVZ Antiviral Toolkit 提供了一整套的脚本函数,使得用户可以自己编写脚本清除病毒、修复系统。今天我们就来看一下如何用AVZ的脚本函数修复安全模式。当然,网络上现在已经有注册表文件或其它的修复程序,但为了演示AVZ脚本函数,我们这里就用AVZ脚本来恢复。恶意程序破换安全模式其实就是删除了注册表中与安全模式相关的注册表键,要恢复安全模式我们就需要恢复那些被删除的键。AVZ脚本为我们提供了这样的函数。我们这里用到的脚本函数有:

procedure RegKeyCreate(ARoot, AName : string);
procedure RegKeyStrParamWrite(ARoot, AName, AParam, AValue : string);

AVZ脚本的语法是类Delphi的。学过Delphi编程的朋友可以很容易地理解上面两个函数的原型。对于不懂编程的朋友,我这里简单介绍一下:

procedure RegKeyCreate(ARoot, AName : string); 是说RegKeyCreate是一个函数名(函数就是子程序,完成某一种功能的一段代码),后面圆括号中的是函数的参数,是这段子程序做操作所要用到的东西。RegKeyCreate函数用于创建一个注册表键,注册表键就是类似于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion这样的东西。后面的ARoot就表示主键,主键一共有五种:HKEY_LOCAL_MACHINE、HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_USERS和HKEY_CURRENT_CONFIG。这些主键下又有子键,参数里的AName就表示子键的键名。后面的“: string”是说这两个参数都是字符串类型的。比如要创建一个注册表键“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal”就可以写:

RegKeyCreate('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal');

RegKeyStrParamWrite这个函数是给键值设置数据的,参数ARoot、AName还是分别表示主键与子键,AParam表示键值(注册表编辑器里叫value),AValue表示键值的数据(注册表编辑器里叫data)。比如要将“HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot”的键值“AlternateShell”的数据设置为“cmd.exe”,就可以这样写:

RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot', 'AlternateShell', 'cmd.exe');

简单介绍这两个函数之后,我们书归正文。为了恢复安全模式,我们需要恢复安全模式相关的所有注册表信息,也就是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot下的所有注册表。这个键下面都有什么信息呢?找一个恢复安全模式用的注册表文件就可以看到。其内容如下:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot]
"AlternateShell"="cmd.exe"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppMgmt]
@="Service"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Base]
@="Driver Group"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Boot Bus Extender]
@="Driver Group"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Boot file system]
@="Driver Group"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\CryptSvc]
@="Service"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\DcomLaunch]
@="Service"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmadmin]
@="Service"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmboot.sys]
@="Driver"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmio.sys]
@="Driver"

……


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
@="Volume"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network\{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}]
@="Human Interface Devices"


这个文件的内容就代表着要对注册表进行的操作。我们就来根据这个文件的内容来写修复脚本。这些东西代表什么呢?我们选两个代表性的来看一下:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal]

这行表示创建一个注册表键“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal”。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot]
"AlternateShell"="cmd.exe"

表示将注册表键“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot”下的键值“AlternateShell”的数据设置为“cmd.exe”。

这不正是前面例子里用脚本函数所做的吗,我们再来回顾一下:

RegKeyCreate('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot', 'AlternateShell', 'cmd.exe');

这下您知道该如何根据注册表文件写脚本了吧。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppMgmt]
@="Service"

写成脚本是什么呢?这里的@表示默认的键值,脚本里用空字符串“”表示,所以写成脚本函数是下面这个样子:

RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppMgmt', '', 'Service');

这样所有注册表文件里的操作我们都能写成等价的脚本函数了。剩下的就是力气活了。要修复的注册表键怎么这么多?

AVZ脚本以“begin”开始,最后以“end.”结束。最后我们得到的脚本是这样的(中间略去n行):

begin
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot', 'AlternateShell', 'cmd.exe');
RegKeyCreate('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppMgmt', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Base', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Boot Bus Extender', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Boot file system', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\CryptSvc', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\DcomLaunch', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmadmin', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmboot.sys', '', 'Driver');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmio.sys', '', 'Driver');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmload.sys', '', 'Driver');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\dmserver', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\EventLog', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\File system', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Filter', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\HelpSvc', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Netlogon', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\PCI Configuration', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\PlugPlay', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\PNP Filter', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\Primary disk', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\RpcSs', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\SCSI Class', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\sermouse.sys', '', 'Driver');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\sr.sys', '', 'FSFilter System Recovery');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\SRService', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\System Bus Extender', '', 'Driver Group');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\vga.sys', '', 'Driver');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\vgasave.sys', '', 'Driver');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\WinMgmt', '', 'Service');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{36FC9E60-C465-11CF-8056-444553540000}', '', 'Universal Serial Bus controllers');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E965-E325-11CE-BFC1-08002BE10318}', '', 'CD-ROM Drive');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E967-E325-11CE-BFC1-08002BE10318}', '', 'DiskDrive');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E969-E325-11CE-BFC1-08002BE10318}', '', 'Standard floppy disk controller');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E96A-E325-11CE-BFC1-08002BE10318}', '', 'Hdc');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E96B-E325-11CE-BFC1-08002BE10318}', '', 'Keyboard');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E96F-E325-11CE-BFC1-08002BE10318}', '', 'Mouse');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E977-E325-11CE-BFC1-08002BE10318}', '', 'PCMCIA Adapters');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E97B-E325-11CE-BFC1-08002BE10318}', '', 'SCSIAdapter');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E97D-E325-11CE-BFC1-08002BE10318}', '', 'System');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{4D36E980-E325-11CE-BFC1-08002BE10318}', '', 'Floppy disk drive');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{71A27CDD-812A-11D0-BEC7-08002BE2092F}', '', 'Volume');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}', '', 'Human Interface Devices');

……

RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Network\{71A27CDD-812A-11D0-BEC7-08002BE2092F}', '', 'Volume');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Network\{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}', '', 'Human Interface Devices');
end.

脚本怎么执行呢?一种方法是在KIS2009的“执行AVZ脚本”里粘贴入脚本执行,方法可以参考我的帖子《用卡巴斯基系统报告生成avz脚本清除hbkernel病毒》。另一种就是在AVZ Antiviral Toolkit的菜单里点选“File->Custom scripts”,在弹出的“Runing script”(这里的拼写有问题,应该是“Running scripte”,呵呵)框里粘贴入脚本,点击“Run”即可。在AVZ里运行的时候在下面的Log框里还能看到日志呢。

评分

参与人数 2经验 +10 人气 +2 收起 理由
change_018 + 10 + 1 精品文章
syfwxmh + 1 感谢分享avz脚本,我会一直更新这个脚本

查看全部评分

change_018
发表于 2008-10-28 23:04:58 | 显示全部楼层
仔细拜读,收获颇多,函数方面我还属于新手,所以有个小问题。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppMgmt]
@="Service"
写成脚本是什么呢?这里的@表示默认的键值,脚本里用空字符串“”表示,所以写成脚本函数是下面这个样子:
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\AppMgmt', '', 'Service');


红色的部分到底是单引,还是双引?
libradohko
 楼主| 发表于 2008-10-29 00:21:21 | 显示全部楼层

回复 2楼 change_018 的帖子

是两个单引号,里面的字符串都是用单引号引起来的,但这里用的是空字符串,所以就是两个单引号,中间什么也没有。文字表述上遵从中文习惯,所以用了双引号,但双引号中间也是什么都没有。
libradohko
 楼主| 发表于 2008-10-29 00:47:56 | 显示全部楼层
需要文档的话,找syfwxmh要吧 :-)
change_018
发表于 2008-10-31 16:24:28 | 显示全部楼层
多谢,了解
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-10 15:27 , Processed in 0.113003 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表