本来一直以为 Alexa Toolbar 没有自动升级功能的,今天突然发现被我修改过的 Alexa Toolbar 竟然恢复正常状态了。我到系统目录下一看,原来被我修改的过的AlxRes.dll的大小是340k变成了336k,而且系统目录下多出了一个AlxRes.dll.bak的文件。我查看了一下Alexa Toolbar的版本信息,原来是“7.0.1.52.1201”,现在变成了“7.0.1.52.1202”。很明显,Alexa自动升级了。
可以肯定,那个新的AlxRes.dll来源于Alexa网站。我粗略地分析了一下Alexa的升级过程:在注册表的“HKEY_LOCAL_MACHINE\SOFTWARE\Alexa Internet”分支下存放了一个名为“lastupdate”,这个值存放了最后一个更新的日期。Alexa Toolbar 被加载时会检查这个键值,当改值的日期与当前日期相差CHECK_UPDATE_INTERVAL这个值的时候,Alexa Toolbar便从远程启动。
Alexa Toolbar在启动时首先加载"res://AlxTB1.dll/CHTML/BOOTSTRAP.HTML",这个页面中的代码会判断是否需要更新Alexa Toolbar,如果不需要,则跳转到"res://AlxRes.dll/CHTML/index.html",如果需要更新,则跳转到http://client.alexa.com/holiday/script/index.html。这就是所谓的远程启动了。
然后AlxTB1.dll会调用URLDownloadToFile函数来下载更新的程序文件。有一点要指出:Alexa Toolbar 只需要更新AlxRes.dll文件就可以了,因为Alexa Toolbar的主要代码都在这个文件里。
最后还要告诉大家一个好消息:这次更新并没有改变数据的收集方式,数据的格式还是和以前一样的。 |