UPX

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. září 2019; kontroly vyžadují 2 úpravy .
UPX
Ultimate Packer pro eXecutables
Typ Balení spustitelných souborů
Vývojář Markus FXJ Oberhumer [d]
Zapsáno v C++ , Assembler
Operační systém Microsoft Windows , Linux , MacOS , DOS , Atari
První vydání 26. května 1998
Hardwarová platforma x86 , MIPS , x86_64 , PowerPC a Motorola 68000
Nejnovější verze 3,96 (23. ledna 2020)
Licence GNU GPL
webová stránka upx.github.io

UPX (Ultimate Packer for eXecutables) je spustitelný balič , který podporuje několik různých platforem a formátů souborů . Je to svobodný a open source software licencovaný pod GNU GPL .

Popis

Komprimovaný spustitelný soubor se skládá z rozbalovacího/inicializačního modulu a datového bloku obsahujícího komprimovaný zdrojový soubor . Po spuštění rozbalovací modul alokuje paměť a rozbalí do ní obsah datového bloku. U některých platforem není rozbalení do paměti možné, v tomto případě se používá rozbalení do dočasného souboru .

Výhody a nevýhody

Zabalení spustitelného souboru umožňuje snížit prostor zabraný softwarem (což může být kritické v případě přenosu po sítích nebo uvolnění softwaru na média s omezenou kapacitou).

Použití paměťových segmentů (v operačních systémech Windows ) zabraňuje operačnímu systému uvolnit segmenty spustitelného kódu bez uložení obsahu do souboru stránky (což ve skutečnosti zvyšuje požadavky programu na RAM). Některé programy nejsou schopny pracovat v komprimované podobě, protože pro práci se spustitelnými soubory používají málo zdokumentovaných (nebo nezdokumentovaných) funkcí operačního systému. V případě rozbalení do dočasného souboru ( systémy podobné UNIXu ) program ztrácí možnost používat argv[0], stav suid bitu je ignorován.

Nejvýraznější a nespornou výhodou je zrychlení čtení a spouštění komprimovaných souborů z paměťových médií a také uvolnění dalšího volného místa na externích discích. K dnešnímu dni jsou všechna externí paměťová média stále nejpomalejšími uzly moderních výpočetních systémů, které „zpomalují“ rychlost systému jako celku, jako v počátcích výpočetní techniky. Proto nelze neocenit efekt, který plyne ze systémového používání baličů spustitelných souborů, jako je UPX. Výpočetní systém stráví mnohem méně času čtením a dekompresí komprimovaného souboru v paměti RAM než pouhým čtením stejného nekomprimovaného souboru (při čtení z externího disku se čas strávený operací počítá v milisekundách a čas strávený zpracováním dat v paměti RAM je mikro- a nanosekundy).

Použité algoritmy

UPX používá bezeztrátový kompresní algoritmus nazvaný UCL (bezplatná implementace algoritmu NRV ( No Really Vanished )) [1] .  

Dekompresor UCL je dostatečně jednoduchý na to, aby mohl být implementován v několika stovkách bajtů a ke svému běhu nevyžaduje žádnou paměť navíc.

Další významná verze UPX (3.0) také používá algoritmus LZMA na 32bitových platformách.

Podporované formáty

Grafická rozhraní

Pro Windows

Praktické použití

V raných verzích WinRAR byly moduly SFX zabaleny s UPX.

Poznámky

  1. Obecná knihovna pro kompresi dat NRV

Odkazy