Wednesday, September 26, 2007

对付微软强制要求升级Messenger 7.x到8.1的办法




为了一个在中国的窄带网络环境下几乎不存在真正影响(视频聊天引擎,要经过美国微软的服务器)的漏洞,微软.NET Messenging Service部门使出了一招强招——强制升级。


所有在Windows 2000下运行MSN7.0的用户都要升级到刚更新的7.0.078x(具体版本记不得了);Windows XP以上的用户不论是7.0、7.5、8.0都被要求升级到8.1。


Messenger 8加入了一个鸡肋功能“共享文件夹”,文件大小加了好几兆,内存资源占用大增;所以很多人一直使用7版本。7版本的协议和8版本实际上没有本质性的变化,这使破解成为可能。下面提供两个办法。


1、使用Win2000兼容模式(适合7.5)把msnmsgr.exe属性中的兼容性设置改成Windows 2000(Windows 98/Me会导致出错)如图:



2、修改exe文件(适合7.0、7.5、8.0所有版本)其实这个办法相当简单,因为MSN在登录时完全不对自身进行完整性验证,且 Messenger直接把自己EXE资源里的版本号发给.NET Passport的服务器。因此,打开任何一个可以修改EXE资源的工具,找到Version资源,把所有和7.0/7.5相关的项全部修改成 8.1.0178,即完成修改过程。经测试对8.0同样有效。

修改过后发现,msnmsgr.exe在其属性下的版本号变成了8.1, 而且启动后能成功登录(开不开兼容模式都是一样),而在软件的帮助->关于下,显示的版本也是8.1。




果然这方面微软不如腾讯,腾讯QQ传到服务器的版本信息是个两个字节的字符串的Hash,存在qqinfo.dat内,QQ.exe、 LoginCtrl.dll不仅互相验证,也验证这个Hash,传到服务器的也是这个Hash;MSN?难道版本验证仅仅是验证EXE的信息?总之到此,MSN7.0/7.5/8.0不能登录的问题已经得到解决。




PS:哈哈,我把7.5改成9.0.1457这个M$内部都没有的胡编版本号,居然能直接登录。。。不知微软管理员看到有什么感想




UPDATE:果然那个破补丁只是改一下几个资源文件罢了。我还能用它作出独一无二的MSN版本呢~(MSN没有任何自我校验机能,数字签名坏了都不提示~