UPX: Zmenšete programy na polovinu

Co takhle zkusit zmenšit spustitelné soubory a dynamické knihovny? Že to nejde? Ale jde! Dnes vám představíme program UPX (Ultimate Packer for eXecutables), který dokáže zmenšit soubory až na polovinu, aniž by jakýmkoli způsobem ovlivnil jejich funkci.
Podíváte-li se podrobněji na obsah pevného disku průměrného počítače, zjistíte, že největší část obvykle zabírají adresáře Windows a Program Files. Není se čemu divit – oba obsahují celou řadu programů, přičemž právě programy patří k největším polykačům volného místa. Chcete-li ušetřit nějaký ten megabajt, můžete například začít odinstalací nepoužívaných aplikací. Po chvilce ale zjistíte, že i když jste z počítače odstranili všechny programy, které již nechcete, stále to ještě není pravé ořechové. Co takhle zkusit zmenšit spustitelné soubory a dynamické knihovny? Že to nejde? Ale jde! Dnes vám představíme program UPX (Ultimate Packer for eXecutables), který dokáže zmenšit soubory až na polovinu, aniž by jakýmkoli způsobem ovlivnil jejich funkci. Jde vlastně o program komprimující spustitelné soubory, který umí zredukovat jejich velikost o 50 až 70 %, čímž lze v konečném efektu ušetřit poměrně výrazné množství místa a v případě, že spouštíte programy ze síťového serveru, můžete tímto krokem dosáhnout i snížení zatížení sítě.

Aplikace existuje ve třech verzích – pro příkazovou řádku Windows, pro 32bitový DOS a pro Linux. Programátory jistě potěší možnost stáhnout si i zdrojový kód.

My jsme podrobili testu první variantu ovládanou z příkazové řádky Windows. O tom, že se nejedná o nějaký horký produkt, svědčí fakt, že program byl ve verzi 1.00 uvolněn až po dvouletém testování, což by mělo být dostatečnou zárukou stability a bezpečnosti.

UPX podporuje celou řadu formátů nejrůznějších vykonatelných souborů, jako jsou aplikace pro Windows 95, 98, 2000 a NT, dynamické knihovny (DLL), DOSové programy a spustitelné soubory operačního systému Linux. Princip fungování takto zkomprimovaného programu je kompresí pouze mírně pozměněn: zatímco nezkomprimovaný soubor se nahraje do paměti, kde se následně spustí, zkomprimovaný se nahraje do paměti, vyvolá se rutina k dekompresi a teprve po rozbalení je program spuštěn. Na současných počítačích nepoznáte prakticky žádný rozdíl mezi spuštěním programu zkomprimovaného pomocí UPX a jeho původní verzí, nicméně na starších strojích bude přece jen citelné zpoždění, během kterého je program rozbalován do paměti. Máte-li ale na stole alespoň Celerona na 300 MHz, můžete si své spustitelné soubory bez obav zkomprimovat.

Z dalších vlastností jmenujme:

  • vynikající kompresní poměr, který dosahuje ve většině případů lepších výsledků než například ZIP či GZIP.
  • vysoká rychlost rozbalování zkomprimovaných souborů (podle autora na starém Pentiu 133 dosahuje hodnoty kolem 10 MB za sekundu)
  • v případě, že byste nebyli s funkcí zkomprimovaného souboru spokojeni, není problém jej uvést do původního stavu. UPX si ukládá do souboru kontrolní součty před kompresí a po ní, takže máte jistotu, že původní soubor lze kdykoli bezpečně obnovit.

    Ovládání programu

    Komprimace Pro základní komprimaci vystačíte s velmi jednoduchou syntaxí:

    Příklad: upx program.exe

    Kromě toho lze určit i stupeň komprese, který je přímo úměrný času, jenž budete ke zkomprimování souboru potřebovat:

  • 1, 2 a 3 nabízejí velmi rychlou kompresi za cenu horšího kompresního poměru
  • 4, 5 a 6 mají optimální poměr komprese a potřebného času
  • 7 je implicitní stupeň
  • 8 a 9 nabízí nejlepší stupeň, ovšem vyžaduje poměrně značné množství času
Příklad: upx -8 program.exe

Je nutné upozornit na skutečnost, že volba kompresního poměru je velice důležitá. Autor sám provedl pokus, během něhož se snažil zkomprimovat jeden a tentýž soubor velký 5 MB, přičemž při použití atributu -7 dosáhl pouze o 65 KB větší výsledné velikosti než při použití atributu -9.

Dekomprimace K dekomprimaci souborů použijte přepínač -d

Příklad: upx -d program.exe

Test Testuje se integrita zkomprimovaného nebo dekomprimovaného souboru, čímž můžete například zjistit, zda je možné ten který soubor bezpečně dekomprimovat. Není testován celý soubor, ale pouze část, která bude dekomprimována během spuštění programu.

Příklad: upx -t program.exe

Výpis Díky tomuto přepínači se můžete dozvědět informace o zkomprimovaném souboru, jako je například původní a současná velikost a kompresní poměr.

Příklad: upx -l program.exe

K dispozici je celá řada dalších přepínačů, které jsou ale pro funkci programu méně důležité. Jejich kompletní výpis získáte příkazem upx --help.

Test

Pro test komprese jsme použili celkem pět různých programů, přičemž jsme sledovali původní velikost, velikost po zkomprimování a dobu nutnou pro provedení komprese. Ve všech případech jsme použili základní nastavení programu, tedy implicitní stupeň 7.
Popis Název souboru Původní velikost Velikost po kompresi Kompresní poměr Čas
Dynamická knihovna MS Office 97 Mso97.dll 3'780'608 2'027'448 0,54 87 sekund
MS Word 97 winword.exe 5'328'896 2'830'336 0,53 156 sekund
Kalkulačka calc.exe 94'208 31'232 0,33 méně než 1 sekunda
Příkazová řádka command.com 94'696 34'855 0,37 méně než 1 sekunda
Adobe PhotoShop 5.0 CZ Photoshp.exe 5'730'816 2'136'064 0,37 133 sekund
U velkých souborů je tedy průměrná rychlost komprese zhruba kolem 40 KB/s, přičemž průměrný kompresní poměr v našem minitestu činil 0,43, výsledné soubory tedy byly o téměř 60 % menší než jejich původní verze. Problém nastal pouze v případě zkomprimovaného souboru command.com, který se odmítal spustit, ostatní programy (ve zbývajících případech se jednalo o standardní Win32 PE EXE soubory) fungovaly zcela bez chyby.

Velice potěšující je skutečnost, že UPX je šířen úplně zadarmo, což je výrazný rozdíl od jiných podobných produktů nabízejících stejné funkce.

Zajímavé jsou rovněž plány do budoucna: autoři chtějí podporovat komprimaci programů pod operačními systémy přenosných zařízení, jako jsou PalmPiloty, kde je důležitý každý ušetřený kilobajt. Stejně tak se plánují i varianty pro další unixové klony a operační systémy, jako je FreeBSD, OpenBSD, NetBSD, Solaris, BeOS a další.

Licence: Freeware Webová stránka: http://upx.tsx.org/ Download, velikost: 113 KB

Diskuze (14) Další článek: Seznam a Atlas se hádají, kdo z nich je větší

Témata článku: Windows, Spustitelný soubor, Důležitý soubor, Celá knihovna, Největší rozdíl, Původní funkce


Určitě si přečtěte

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 66

Svobodný RISC-V: Možná za deset let po ARMu neštěkne ani pes. Google a armáda dalších vyvíjejí konkurenční procesor

Svobodný RISC-V: Možná za deset let po ARMu neštěkne ani pes. Google a armáda dalších vyvíjejí konkurenční procesor

**Architektuře RISC už desetiletí vládne britský ARM ** Procesory jeho návrhu najdete v pračce, v routeru i v mobilu ** Ale pozor, o slovo se hlásí svobodný RISC-V

Jakub Čížek | 33


Aktuální číslo časopisu Computer

Jak mobily určují svoji polohu?

Velký test notebooků pro studenty

Nejlepší reproduktory na párty

Služby a aplikace pro výuku angličtiny