修复被恶意修改的注册表

编程爱好者

编者按:我们在互联网上冲浪时,一不小心就会遇到一些恶意网页,导致IE默认连接首页、标题栏被更改、注册表被禁用,IE中鼠标右键失效、无法查看源文件等等。本期就教大家用编程的方法来解决这类问题,使我们能知其然更知其所以然。

一般网友如果遇到注册表被恶意网页修改,可以通过一些专用软件来修复。而具有一定编程能力的朋友,可以通过自编程序解决,代码也比较简单,本文程序以Borland C++ Builder进行编码,其他编程语言的编程方法类似。

一、注册表被修改的原因

浏览网页时,部分网页是有人利用Java技术制作的含有恶意代码的ActiveX网页文件,一旦打开此网页,这些脚本就被执行,注册表就被修改了,下面给出一个有害的Java的脚本源码:

使受害者系统没有“关闭系统”项的源码如下:

Shl.RegWrite ("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoClose", 01, "REG_BINARY");

使受害者系统没有“注销系统”项的源码如下:

Shl.RegWrite("HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\NoLogOff", 01, "REG_BINARY");

二、修复大法

我这里列举了十种常见的问题,如窜改IE的默认页、禁用查看源文件等问题,程序界面如图:

51-g15-1-1.jpg

1.IE默认连接首页被修改

现象:IE浏览器上方的标题栏被改成“欢迎访问……网站”的样式,这是最常见的窜改手段,受害者众多。

原因:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Start Page

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Start Page

“Start Page”的键值被修改,来达到修改浏览者IE默认连接首页的目的,即便是出于给自己的主页做广告的目的,也显得太霸道了一些,这也是这类网页惹人厌恶的原因。

解决办法:将Start Page的键值改为“about:blank”即可。

编码:使用Borland C++ Builder来操作注册表应进行如下编码:这里介绍在Borland C++ Builder中如何更改键值(String)和删除键值,采用WriteString和DeleteValue的方法。

①添加头文件:

#include "registry.hpp" //在程序开始处包含定义类模块的头文件

②TRegistry * MyReg =new TRegistry();//创建类的一个实例(对象)

③对“修复”按钮进行编码:

void __fastcall TForm1::Button3Click(TObject *Sender)

{ TRegistry * MyReg =new TRegistry();//创建类的一个实例(对象)

//第一种情况:IE默认连接首页被修改

//IE浏览器上方的标题栏被改成“欢迎访问……网站”的样式

if (cb1->Checked==true)//如果第一个复选框被选中,执行下面的代码

{ MyReg->RootKey=HKEY_LOCAL_MACHINE;MyReg->OpenKey("\\SOFTWARE\\Microsoft\\Internet Explorer\\Main",true);

MyReg->WriteString("Start Page","about:blank");//把此键值写为空,采用写字符串的方法

MyReg->CloseKey();

MyReg->RootKey=HKEY_CURRENT_

USER;

MyReg->OpenKey("\\SOFTWARE\\Microsoft\\Internet Explorer\\Main",true);

MyReg->WriteString("Start Page","about:blank");//把此键值写为空

MyReg->CloseKey();

//当IE的起始页变成了某些网址后,就算你通过Internet选项设置修改好了,重启以后又会变成他们的网址,是在你机器里加了一个自运行程序,它会在系统启动时将你的IE起始页设成他们的网站。

MyReg->RootKey=HKEY_LOCAL_MACHINE;

MyReg->OpenKey("\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",true);

MyReg->DeleteValue("registry.exe");//采用删除键值的方法

MyReg->CloseKey(); } }

delete MyReg;}

2.窜改IE的默认页

现象:有些IE被改了起始页后,即使设置了“使用默认页”仍然无效,这是因为IE起始页的默认页也被窜改了。

原因:以下注册表项被修改:

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\Default_Page_URL“Default_Page_URL”这个子键的键值即起始页的默认页。

解决办法:将“Default_Page_UR”子键的键值中的那些窜改网站的网址设置为IE的默认值about:blank,编码方法同上。

3.修改IE浏览器缺省主页,并且锁定设置项,禁止用户更改回来

现象:Internet选项对话框中“删除文件”和“设置”按钮不可用。

原因:HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel下的Settings、Links、SecAddSites被修改为1了。

解决办法:把上述三个键值改为0。

此处介绍在Borland C++ Builder中如何更改键值(DWORD)

//主要是修改了注册表中IE设置的下面这些键值(DWORD值为1时为不可选),将这些DWORD值改为0即可恢复功能

if (cb3->Checked==true){ MyReg->RootKey=HKEY_CURRENT_USER;MyReg->OpenKey("\\Software\\Policies\\Microsoft\\Internet Explorer\\Control Panel",true);

MyReg->WriteInteger("Settings",0);

MyReg->WriteInteger("Links",0);

MyReg->WriteInteger("SecAddSites",0);

MyReg->CloseKey(); }

4.IE的默认首页灰色按钮不可用

现象:Internet选项对话框中“使用当前页”、“使用默认页”、“使用空白页”三个按钮不可用。

原因:这是由于注册表HKEY_USER\.Software\Policies\Microsoft\Internet Explorer\Control Panel下的DWORD值“homepage”的键值被修改的缘故。原来的键值为“0”,被修改为“1”(即为灰色不可选状态)。

解决办法:将“homepage”键值修改为0即可。

5.IE标题栏被修改

现象:浏览者的IE标题栏被更改

原因:在系统默认状态下,是由应用程序本身来提供标题栏的信息,但也允许用户自行在上述注册表项目中添加信息,而一些恶意的网站正是利用了这一点来得逞的:它们将串值Window Title下的键值改为其网站名或更多的广告信息,从而达到改变浏览者IE标题栏的目的。具体说来受到更改的注册表项目为:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\Window Title

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\Window Title

解决办法:将“Window Title”键值修改为“Internet Explorer”或者删除即可。

6.限制注销、运行、关机功能

现象:计算机的注销、运行、关机功能都被禁用。

原因:下列注册表项目被更改:

HKEY_CURRENT_USER\ Software\Microsoft\Windows\CurrentVersion\Policies\Explorer下的NoLogOff、NoRun、NoClose的键值被修改为1了。

解决办法:将上述的键值修改为0。

7.IE默认搜索引擎被修改

现象:在IE浏览器的工具栏中有一个搜索引擎的工具按钮,可以实现网络搜索,被窜改后只要点击那个搜索工具按钮就会链接到那个窜改网站。

原因:以下注册表被修改:

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Search\CustomizeSearch

HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Search\SearchAssistant

解决办法:将“CustomizeSearch”和“SearchAssistant”的键值改为某个搜索引擎的网址即可。

8.系统启动时弹出对话框

现象:每次登录到Windows桌面之前都出现一个提示窗口,显示那些网页的广告信息。

原因:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon\LegalNoticeCaption和LegalNoticeText被更改。

解决办法:采用DeleteValue方法将LegalNoticeCaption和LegalNoticeText删除。

9.注册表被禁用

现象:无法运行注册表程序。

原因:以下注册表被修改:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System下的DisableRegistryTools被修改为1。

解决办法:将DisableRegistryTools的键值修改为0。

10.IE中鼠标右键失效,“查看源文件”菜单被禁用

现象:IE中点击鼠标右键没有反应,菜单“查看源文件”被禁用。

原因:HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions下的NoViewSource和NoBrowserConte

HKEY_USERS\.DEFAULT\Software\Policies\Microsoft\Internet Explorer\Restrictions下的NoViewSource和NoBrowserContextMenu被修改为1。

解决办法:分别将这4个键值修改为0。

三、小结

这里分析了利用ActiveX来修改注册表的几种形式,也简单介绍了使用Borland C++ Builder来操作注册表的方法,希望大家灵活掌握BCB来操作注册表。

程序全部源代码下载网址:http://www.cpcw.com/xz/51-source.txt”。