2006年3月1日 星期三

用 UPX 幫你的二進位執行檔瘦身

Standard
什麼是 UPX ?它的全名是 the Ultimate Packer for eXecutables,顧名思義就是能將執行檔做壓縮,使執行檔變得很小。有多小呢?一般狀況下可以壓縮成原來的 40% 甚至更小!

程式執行會不會變慢?

關於被壓縮過後的程式執行速度,只有執行剛開始需要解壓縮會比較慢,當程式啟動完畢後就和原先速度一樣,所以最多是啟動時速度比較慢而已。據官方數據統計,在 Pentium 133 的系統上,解壓縮的速度每秒可達 10mb;而在 Athlon XP 2000+ 的系統上,每秒可達 200mb,程式會到達 200 mb 的應該沒有才是。所以說啟動速度只慢個一秒不到,甚至感覺不到有慢,尤其今天的 CPU 隨便就 3.0GHz 以上,解壓縮速度的問題根本就不用煩惱。

能應用在哪裡呢?

一般人不會無聊到要去省那一點點的空間,反正現在硬碟大的很。但是,若用在嵌入式及 LiveCD 系統中,這可以省下不少空間,甚至在 LiveCD 中,程式執行效能還會增加。程式執行效能增加?何解呢?因為光碟讀取是機械動作,速度極慢,尤其當光碟有刮損、不乾淨時,更是一點點資料讀半天。若是用 upx 將執行檔壓縮成一半大小不到,就可以減少光跌機讀取的時間。如此,速度不就增加了嗎?

如何使用呢?

可以去官方網站 Download 壓縮主程式: http://upx.sourceforge.net/

裝好後,就可以用 upx 壓縮執行檔了,如下:

upx <binary-file>

後記

UPX 除了可處理 Linux kernel 和 ELF 檔外,在其他的平台如 Windows、 DOS上也可運作,官方網站上有詳細的資料。