Last time in “Windows Live Messenger 8.5 is Resurrected” I mentioned about that I removed the limit of single process per user session on a Windows system as well as the update-reminding balloons. This time I am going to tell you how the WLM originally works on such both things and you will find that there no difficulty to patch them yourself.

1. Constraint on the number of WLM process

This is done by trying to create an event object with invoking the CreateEvent() API function using a constant event name. In our case of WLM 8.5, it is MSNMSGR. If you use tools to probe opened handles in a WLM process, you may find some thing like Figure.1. According to the MSDN document, if you try to create a named event that already exists, CreateEvent() will return the handle to the already-created event object, and a subsequent GetLastError() invocation returns ERROR_ALREADY_EXISTS. So during WLM’s initialization, it tries to create a named event object and check the return value from GetLastError(): if the value indicates an existed object, the process signals it and terminated itself.

opened handles
Figure.1

To present this flow in a more detailed perspective, I made the following pseudo code:

HANDLE hEvent = CreateEvent(NULL, true, NULL, "MSNMSGR");
if (hEvent == NULL) {
    goto OnError;
}
else if (GetLastError() == ERROR_ALREADY_EXISTS) {
    // we do this to notify the existing WLM process
    // to pop up its main window
    SetEvent(hEvent);

    goto ExitProcess;
}

// do some subsequent initialization
....

2. Retrieval of current version number from server

After the identity authentication passed, the WLM client send its current version information to the server by posting a VER message in the microsoft defined protocol (it is a plain text format). The server then respond a CVR message with the latest stable version number of client software and perhaps a URL to the new client download, depending on the information sent by the client earlier. If the server response contains a URL, then it means that the client side is recommended to upgrade its program, and an annoying balloon will come out. This portion of code is merely some string comparison, which parses the server response.

DWORD dwHead = *((DWORD*)szMsg);
switch (dwHead) {
    case 0x20524556:  // VER
        ...
        break;
    case 0x20525643:  // CVR
        ...
        break;
    ...
}

A fast but somewhat brute method to disable this behavior is to break the pattern used to be matched by parser. We only need to modify the string CVR in the executable image to anything else, so the program will not be able to recognize the latest client version and URL to download it. This does work and for now no side effects have been found by me, since the information provided with a CVR message will not be used ever after.

Since the new version, or the so-called stable release, of Windows Live Messenger (build 14.0.8064.0206) was available for downloads, many of my friends have been complaining about its inconvenience brought by the yet modified UI design and its instability. In fact, most of them didn’t intended to apply the update, but the ANNOYING update balloon just kept popping up and said, “I will keep poking you until you install my new update, mate!”

As always fighting for the freedom of humankind, I can not tolerate this kind of rude behavior. So I yet modified the binary of Window Live Messenger 8.5, yes I did that again, to get rid of this foolish balloon. Because I have little time to rewrite Purifier recently, I can only upload the patched binaries for you, which are the same files I am using now.

http://w.csie.org/~b94117/download/Messenger.rar

Version: 8.5.1302.1008
Language: Taiwanese

  1. Ad banners and texts are removed as Purifier has already done for you
  2. Support for multi-account logins is added (you will need to run a Messenger process for each account)
  3. No update-reminding balloons anymore

Note: some reported that the packed binaries didn’t work on a clean system.

平安戲
作:杜潘芳格

只曉得順從的平安人
只曉得忍耐的平安人

圍繞著戲台
捧場著看戲

那是你容許他演出的

很多很多的平安人
寧願在戲台下
啃甘蔗含李子鹼
保持僅有的一條生命


平安戲。(1968)

無奈人總是透過令人悲痛的經歷才得到成長、以至達觀。如同陳秀喜等「跨語言世代」透過反殖民思潮當中的民族自決觀點,連帶地看清楚了女性自覺的必要性;如同尹玲因為飽受越戰戰火的摧殘以及極權政府鞏固後的顛倒是非,而看見了人性中最醜陋的一面,也體會到世事的無常。杜潘芳格除了同陳秀喜一樣出身日本殖民年代的台籍布爾喬亞家庭、受過先進的日本教育,因而能夠使用優雅的語言表達思考以外,在終戰後不幸成為了「二二八事件受難家屬」此事更讓她對於國民政府的國族主義與殖民政治本質有了刻骨的體會。

國族主義,或稱國家主義,乃是一個以絕對的政治力量將「國家」和「全體人民」利益置於所有人民價值當中最高點的統治方式。在這個架構之下,「個人」的空間將被大幅度縮減乃至於消滅,所有與他人不同的生活方式和思想都將被視為異端。而當見到有人因為「不一樣」而遭受到攻訐的時候,大部分的人選擇出自於苟且偷生的心態而選擇沉默,一如〈中元節〉當中所寫道:『你/喜愛在紛雜的人群裡/「忘我」。』透過操控大眾「恐懼」而達到全體化目的國家主義,事實上也是藉由讓全體的人一起承擔罪惡,來消除個人因此所產生的罪惡感。『大家都是這樣做的嘛』這種想法正被杜潘芳格同一首詩當中的『使牠咬著「甘願」的/是你,不然就是我』一針見血地描繪了出來:權力者可以肆無忌憚地壓迫個體,實實在在就是因為我們其他不敢發聲的人的縱容,而我們也確確實實都成為了這個多數暴力體系的共犯。

受過完整且良好日式教育的杜潘芳格,一定深刻體會了盟軍委託蔣介石的中國占領台灣之後,台灣的仕紳階級被軍政府暴力地扣上「受到殖民思想毒素侵害者」的帽子,除了無法獲得政治權力以外更飽受各種壓迫,比起日本殖民時代的統治可說是有過之而無不及。然而在二二八事件發生之後,所引起的寒蟬效應卻幾乎讓所有的台灣人因此沉默了五十年之久。正因為『年年都是太平年/年年都演平安戲』,如果可以像台灣人最喜歡祈求的「永保安康」一樣,平平安安地在台下邊啃著甘蔗邊看戲,又何苦成為那個被塞住嘴、端上貢桌的神豬呢?


平安戲
還在上演呢。

After downloading an open source project licensed with GPL, it costs you a whole weekend setting up and having all configuration done, and finally being online on service. Others then come and use your network bandwidth, CPU, and memory resources for free, and some even try to hack your service. You paid the bills to electricity company and ISP for your system and look what you got in return: …… I can hardly name one, maybe the “respects” from free users?

So why not have your service GET PAID?
Read More »

整理我在 infor.org 網頁空間的時候發現了一些舊東西,其中一個是在高二下學期拍攝的一部「具有教育意涵的台北101介紹影片」。這部影片是在一門叫做「生活科技」的課程當中,由一位常被學生在背後說壞話的老師所出的作業。很顯然地我並不喜歡在別人背後說壞話,所以我就開門見山地直說了(老酥你沒看到是你自己的損失咧),這深耕教育真是天殺的膣屄。因為老師自己能力的限制,他只教我們用一款很簡單又很不穩定還要付費使用的 Ulead Media Studio。他告訴我們下載安裝官方網站所提供的試用版軟體之後,叫我們「接著自己想辦法找破解」。再者課堂中只提供傳輸線將 DV 的訊號傳輸給電腦,並不提供 DV 等的攝影器具,這根本連最低限度一台 DV 讓我們打架搶著借用的機會都沒有。不過就另外一個角度來說,他實在是很有公司老闆的行事風格,提供全台北第一志願明星高中的學生一個良好的職前訓練!

廢話就說到這邊了,我們的本片有 20 分鐘落落長,而且剪接得非常失敗,因此我一直不放上網路給人下載。不過我在期末 demo 之前還另外做了一部 1:51 的預告片,自己在當時還滿得意的說,所以就放上來了:http://mifan.infor.org/pic/taipei101_trailer.wmv