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 .
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 .
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).
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.
V raných verzích WinRAR byly moduly SFX zabaleny s UPX.
Archivátory a kompresory | |
---|---|
otevřené a zdarma | |
Volný, uvolnit | |
Komerční | |
Příkazový řádek |