Tuesday, September 15, 2009

手工去掉了MSN界面的广告

用过msnshell 和 msg plus 这两个插件,选用前者的原因是去广告,选用后者的原因是功能增强。但是曾经试图两个同时装,结果很多msgplsu的特性都被msnshell屏蔽了,很是恶心。
新版本的live messenger + msnshell 用过一段时间,却发现,msnshell并不是把主界面广告条隐藏了,而是把显示的位置调整了,使得广告在主界面上看不出来,但是偶尔的时候却能看到上边几个像素的内容,很是不爽。
最终决定把msnshell卸了,忍了一段时间的广告,赶着昨天live messenger有更新(今天baidu hi也更新了,msn的支持也没了,唔。。。),索性今天来尝试自己去广告。
基本思路还是走资源。
拿exeScope看了live messenger目录下的所有dll和exe,没有直接找到相关的内容。于是上网查了查,看到了这个:http://hi.baidu.com/fzu728/blog/item/780e7cf40bbccedff2d3851e.html。
但是这里给的东西,并没有找到。

重新看了看资源,发现msgsres.dll的数字开头的部分,很多都是UIB头的文件。
换用resource hacker,一样。
上网搜了搜 uib file decode,发现了这几个东西:
http://www.msghelp.net/showthread.php?tid=88339&pid=945754
http://forums.fanatic.net.nz/index.php?showtopic=19541
http://dotnetwizard.net/live/messenger-plus-live-for-wlm-2009-final/

注意了下msgplus的目录,的确有个 MPTools.exe,但是不能直接运行。
稍微注意了下,这个文件是msg plus在msn里的选项工具。
于是在 msg plus 选项里找了找,看到了皮肤设计的部分,最下边有一个解压资源,一个文档。
点击文档,看到了 Specialized Subjects 下的 Encoding and Decoding UIB
正是我想要的。

Here is an example of how to decode a UIB file:
MPTools.exe /UIB=Decode /Src="C:\uibfile.uib" /Def="C:\deffile.txt" /Style="C:\stylefile.txt"
And here is another example of how to re-create a UIB file:
MPTools.exe /UIB=Encode /Def="C:\deffile.txt" /Style="C:\stylefile.txt" /Dest="C:\uibfile.txt"

于是首先用 resource hacker把所有的资源导出来。
发现导出目录里一堆Data_***.bin的文件
用vs08 打开.rc文件,看到了一些关系对应。

直接用emeditor 打开,根据第一个链接里的几个关键词SSConstrainer, adbannercont
定位了两个文件,Data_1274.bin 和 Data_1277.bin
解压资源
C:\Documents and Settings\Administrator\Desktop\msgres>"\Program Files\Messenger Plus! Live\MPTools.exe" /UIB=Decode /Src=Data_1274.bin /Def=1274.def.txt /Style=1274.style.txt

C:\Documents and Settings\Administrator\Desktop\msgres>"\Program Files\Messenger Plus! Live\MPTools.exe" /UIB=Decode /Src=Data_1277.bin /Def=1277.def.txt /Style=1277.style.txt

Emeditor打开两个def文件,找到了想要的东西
如第一个链接的内容
1、去掉主窗口下的广告
用Restorator打开msgsres.dll中的4004-923,查找里面的"ID=Atom(SSConstrainer)",不包括两头双引号,将前面的layoutpos=top改为layoutpos=none

2、去掉聊天窗口下的文字广告
在4004 - 920里
找到: element id=atom(adbannercont) layout=filllayout()
改为: element id=atom(adbannercont) layoutpos=none
不过,第一个在 4010:923 Data_1277.bin 对应的文件里,第二个在 4010:920 Data_1274.bin 里
按文章说明直接改,保存,然后重新Encode代码

C:\Documents and Settings\Administrator\Desktop\msgres>"\Program Files\Messenger Plus! Live\MPTools.exe" /UIB=Encode /Def=1274.def.txt /Style=1274.style.txt /Dest=Data_1274.new.bin

C:\Documents and Settings\Administrator\Desktop\msgres>"\Program Files\Messenger Plus! Live\MPTools.exe" /UIB=Encode /Def=1277.def.txt /Style=1277.style.txt /Dest=Data_1277.new.bin

打开刚才的resource hacker的窗口,选择菜单栏的 “Action”,“Replace other resource...”,
“Open File with New Resource...”选择文件,上边保存的是 Data_1274.new.bin 和 Data_1277.new.bin,这两个得和下边的Resource Name对应起来,对应关系往上看。
“Resource Type”:输入 4010
“Resource Name”:输入 920 (923)
“Resource Language”:我用的是英文版的 live messenger,所以是1033,中文的应该是2052
然后 Replace, 保存dll就行

当然,修改的过程无所谓,但是保存的时候,一定要把msn 关掉,或者你另存为,然后关msn,自己替换也行。
反正现在我的主窗口和聊天窗口下方的广告栏已经没了。

# EOF

1 comment: