IE默认主页位于注册表HKCU\Software\Microsoft\Internet Explorer\Main下面的“Start Page”字符串的值,为避免IE主页被修改,我们可以永久地锁定它,禁止其它程序修改。网上找到很多永久锁定IE的方法,那些方法其实并非真正的“永久”,都是可以被改掉的,所以,我们换一种思路,从文件入手,针对IE本身来解决。下面我们以XP+IE8为例,介绍一下如何实现彻底地锁定IE主页。
首先,我们要弄懂IE主页的工作原理,IE启动后既然要加载主页,肯定要读取注册表[StartPage]的键值,所以“Start Page”这个字符串肯定在一个与IE相关的系统文件中,不一定是iexplore.exe,也可能是系统的DLL,因为IE要加载若干DLL它才能正常工作。用工具查看IE加载的DLL模块,有上百个,要知道具体是哪一个我们需要用工具分析。
由于IE主窗口和页面是分开的两个进程,所以不好掌控它,因此我们从IE属性中下手。IE属性对话框是一个DLL,名字叫做inetcpl.cpl,位于系统目录下。首先打开OllyDBG,选择文件-打开,在文件名输入rundll32.exe,参数中输入命令“C:\WINDOWS\system32\shell32.dll,Control_RunDLL INETCPL.CPL”,就绪后,在左下角命令窗口输入bp RegQueryValueExW,在读注册表的函数上下断点,按F9运行它,当断下的时候,注意看堆栈窗口中的数据,第三行ValueName的值就是要读取的注册表的值,如果是Start Page就停止来,否则就一直F9下去。当出现StartPage后,看堆栈窗口中0007A204那一行:CALL 到 RegQueryValueExW 来自 iertutil.5DDBA9A3,说明调用RegQueryValueExW的是iertutil.dll这个文件,也就是说,加载IE主页的任务是由iertutil.dll负责执行的,再往下有个Unicode "Start Page"的字样,右击它选择“数据窗口中跟随”,数据窗口中5DDB8F14处正是Start Page这个unicode字符串,数据窗口中右击选择“查看可执行文件”,打开文件窗口,可以看到“Start Page”位于文件0x00118314处,把它给改了。随便改一个名字,长度要相等,比如改第1个字节,把S改成Z,“Start Page”就变成了“Ztart Page”。最后在数据窗口右击选择备份-保存数据到文件,另存一份iertutil.dll。
我们目前已经把“Start Page”换掉了,接下来要进行下一步,就是添加注册表项,打开注册表编辑器,定位到Main下面,在Main下面建一个REG_SZ的值,名字改成刚才的Ztart Page,修改它的值为要锁定的网址。最后一步是替换iertutil.dll,有两种方法,一种是在PE下替换,一种是直接用ARK工具删掉system32下的iertutil.dll,然后复制刚才改好的进去,重启电脑。替换前先备份。
下面测试一下,打开IE,发现它会自动打开我们设置的页面,现在用任何修改IE主页的软件也无法再改变这个页面,因为StartPage已经作废了。同样的,IE属性中也无法修改,但是却可以读取,这是因为读取主页是通过iertutil.dll实现的,而修改是它自己在弄。我们自己要改的话,到注册表中去改“Ztart Page”的值就行了,麻烦的话就把inetcpl.cpl这个文件也改了,仍然是通过上述方法,只不过下断是在RegSetValueExW上面,断下后会找到Start Page,改为Ztart Page即可,这样,在IE属性就可以改主页了,而且有且只有它才能改。如果要恢复IE的话恢复iertutil.dll即可,或者重装系统。
转载自:http://hi.baidu.com/zzmzzff/item/baf96f30319ef280b711dbd0