基本介紹
UPX 是一款先進的可執行程式檔案壓縮器。壓縮過的執行檔體積縮小50%-70% ,這樣減少了磁碟占用空間、網路上傳下載的時間和其它分布以及存儲費用。 通過 UPX 壓縮過的程式和程式庫完全沒有功能損失,和壓縮之前一樣可正常地運行。對於支持的大多數格式沒有運行時間或記憶體的不利後果。
UPX 支持許多不同的執行檔格式 :包含 Windows 95/98/ME/NT/2000/XP/CE 程式和動態程式庫、DOS 程式、Linux 執行檔和核心。
UPX有不光彩的使用記錄,它被用來給木馬和病毒加殼,躲避防毒軟體的查殺。
UPX是一個著名的壓縮殼,主要功能是壓縮PE檔案(比如exe,dll等檔案),有時候也可能被病毒用於免殺.殼upx是一種保護程式。一般是EXE檔案的一種外保護措施,主要用途 :
1、讓正規檔案被保護起來,不容易被修改和破解。
2、使檔案壓縮變小。
3、保護防毒軟體安裝程式,使之不受病毒侵害。
4、木馬,病毒的保護外殼,使之難以為攻破。 僅僅看一個殼upx路徑 是不能確定什麼的。要仔細看看他相對應的檔案,如果是防毒或者是自己已知的檔案那就無傷大雅,要是其他疑似,就要認真對待了。
有些軟體的安裝程式是加殼安裝的,屬正常現象。 建議查殺一下惡意程式、病毒。
技術原理
對於可執行程式資源壓縮,是保護檔案的常用手段. 俗稱加殼,加殼過的程式可以直接運行,但是不能查看原始碼.要經過脫殼才可以查看原始碼.
加殼:其實是利用特殊的算法,對EXE、DLL檔案里的資源進行壓縮。類似WINZIP 的效果,只不過這個壓縮之後的檔案,可以獨立運行,解壓過程完全隱蔽,都在記憶體中完成。解壓原理,是加殼工具在檔案頭裡加了一段指令,告訴CPU,怎么才能解壓自己。當加殼時,其實就是給可執行的檔案加上個外衣。用戶執行的只是這個外殼程式。當執行這個程式的時候這個殼就會把原來的程式在記憶體中解開,解開後,以後的就交給真正的程式。
套用平台
壓縮檔案
用UPX壓縮過的執行檔體積縮小50%-70% ,這樣減少了磁碟占用空間、網路上傳下載的時間和其它分布以及存儲費用。 通過 UPX 壓縮過的程式和程式庫完全沒有功能損失和壓縮之前一樣可正常地運行,支持的大多數格式程式,沒有運行時間或記憶體的不利後果。
加殼脫殼
程式為了反跟蹤、被人跟蹤調試、防止算法程式被別人靜態分析就需要加殼。使用加殼軟體加密代碼和數據,就可以保護你程式數據的完整性,防止被程式修改和被窺視內幕。
版權資訊
Copyright (C) 1996-2007 Markus Franz Xaver Johannes OberhumerCopyright (C) 1996-2007 Laszlo MolnarCopyright (C) 2000-2007 John F. ReiserAll Rights Reserved.This program may be used freely, and you are welcome toredistribute it under certain conditions.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theUPX License Agreement for more details.
使用實例
程式 | 檔案格式 | 檔案名稱 | 原檔案大小(bytes) | 壓縮後大小(bytes) | 壓縮用時(秒) |
Netscape 4.06 | win32/pe | netscape.exe | 2,934,336 | 1,124,352 | 0.383 |
Descent 2 | watcom/le | descent2.exe | 1,448,873 | 652,832 | 0.451 |
MAME 0.36 | djgpp2/coff | mame.exe | 8,214,016 | 1,810,056 | 0.220 |
OneOhOne | dos/exe | 101.exe | 438,144 | 179,566 | 0.410 |
Emacs 20.2 | linux/386 | emacs-20.2 | 2,772,657 | 925,543 | 0.334 |
g++ 2.8.1 | atari/tos | cc1plus.ttp | 1,595,049 | 655,508 | 0.411 |
支持格式
以下是支持執行檔格式列表
X | X | Linux ELF | Linux, AMD64 | |
X | X | Linux kernel | ||
X | X | Linux ELF | Linux, ARM | |
X | X | Linux kernel | ||
X | X | Windows CE executable or DLL | Windows CE, ARM | |
X | X | Linux ELF | Linux, ARM | |
X | X | Linux kernel | ||
X | X | Mac OS X executable | ||
X | X | DOS 16-bit .com file | ||
X | X | DOS 16-bit executable | FreeDOS homepage | |
X | X | DOS 16-bit .sys file | ||
X | X | BSD generic | ||
X | X | Mac OS X executable | Darwin, i386 | |
X | X | DOS 32-bit COFF | djgpp homepage | |
X | X | DOS 32-bit executable | TMT Pascal | |
X | X | DOS 32-bit linear executable | Open Watcom C/C++ | |
X | X | FreeBSD ELF | FreeBSD | |
X | X | Linux ELF | Linux, i386 | |
X | X | Linux generic | ||
X | X | Linux shell script | ||
X | - | Linux kernel | ||
X | X | Linux kernel | ||
X | - | Linux kernel | ||
X | X | NetBSD ELF | NetBSD | |
X | X | OpenBSD ELF | OpenBSD | |
X | X | Windows 32-bit executable or DLL | ||
X | X | Atari TOS/MiNT executable | FreeMiNT portal, m68k | |
X | X | Linux ELF | Linux, MIPS | |
X | X | Linux ELF | Linux, MIPS | |
X | X | PlayStation 1 | PlayStation, MIPS | |
X | X | Mac OS X executable | Darwin, PowerPC | |
X | X | Linux ELF | Linux, PowerPC | |
X | X | Linux kernel |