Replace files in msi package

| | Comments (2)

以下的例子算是土法煉鋼 (以 MSN 7.0.0425 為例)

執行 Install_MSN_Messenger.exe, 在 %TEMP% 目錄可找到 msi 檔,
copy 出來成 msn7.0.0425.msi

然後用 msi2xml 轉換成 xml 檔

msi2xml msn7.0.0425.msi (在 windows 下執行)
會產生 msn7.0.0425.xml

傳到 linux 下, 使用 base64 來解檔

MSN 的檔案大都存在 裡

tail +$((`grep -n msn7.0.0425.xml | tail -1 | cut -d: -f1`+2)) msn7.0.0425.xml >
抽出 的 base64 編碼部分, 存到

base64 -d
將 解出

找一套能處理 cab 的壓縮程式, 例如 zipzag,
將修正過的 msnmsgr.exe 及中文化的 msgslang.dll (由 March Fun 製作),

接下來要把 msn7.0.0425.xml 後半的 md5 及 base64 部分, 用新的取代
N=`grep -n $CAB $XML | tail -1 | cut -d: -f1`
head -$N $XML > $NEWXML
let N++
OLDMD5=`sed -n "$N"p $XML | cut -d\" -f4`
NEWMD5=`md5sum $NEWCAB | cut -d' ' -f1`
sed -n "$N"p $XML | sed s/$OLDMD5/$NEWMD5/ >> $NEWXML
mimencode $NEWCAB >> $NEWXML
tail -4 $XML >> $NEWXML

上面這段 script 會產生新的 xml 檔, 再回到 windows 用 xml2msi 轉
xml2msi msn7.0.0425cht.xml

最後產生 msn7.0.0425cht.msi, 直接安裝就是中文版!

簡單地說, 先用 msi2xml 轉成 xml 檔, 再把裡面檔案的 md5 及 base64 編碼部分置換,
再用 xml2msi, 轉回 msi 檔

2 Comments was extracted from msi file

msi2xml msn7.0.0425.msi (run under windows, generate msn7.0.0425.xml)
tail +$((`grep -n msn7.0.0425.xml | tail -1 | cut -d: -f1`+2)) msn7.0.0425.xml > (run under Linux)
base64 -d (run under Linux) is missing
plz help me and send me copy of this file

Leave a comment

March 2009

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

About this Entry

This page contains a single entry by Pank published on November 19, 2004 12:05 AM.

pidof for FreeBSD was the previous entry in this blog.

PXE Server is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.