UPX den ultimata packaren för körbara filer | |
---|---|
Sorts | Packa körbara filer |
Utvecklaren | Markus FXJ Oberhumer [d] |
Skrivet i | C++ , Assembler |
Operativ system | Microsoft Windows , Linux , MacOS , DOS , Atari |
Första upplagan | 26 maj 1998 |
Hårdvaruplattform | x86 , MIPS , x86_64 , PowerPC och Motorola 68000 |
senaste versionen | 3,96 (23 januari 2020) |
Licens | GNU GPL |
Hemsida | upx.github.io |
UPX (the Ultimate Packer for eXecutables) är en körbar packer som stöder flera olika plattformar och filformat . Det är gratis och öppen källkod licensierad under GNU GPL .
En komprimerad körbar fil består av en uppacknings-/initieringsmodul och ett datablock som innehåller den komprimerade källfilen . När uppackningsmodulen startas allokerar uppackningsmodulen minne och packar upp innehållet i datablocket i det. För vissa plattformar är det inte möjligt att packa upp i minnet, i det här fallet används uppackning till en temporär fil .
Genom att paketera en körbar fil kan du minska det utrymme som upptas av programvaran (vilket kan vara avgörande vid överföring över nätverk eller frisläppande av programvara på media med begränsad kapacitet).
Användningen av minnessegment (på Windows-operativsystem ) förhindrar operativsystemet från att släppa segment av körbar kod utan att dumpa innehållet i sidfilen (vilket faktiskt ökar programmets RAM-krav). Vissa program kan inte fungera i komprimerad form, eftersom de använder få dokumenterade (eller odokumenterade) funktioner i operativsystemet för att arbeta med körbara filer. Vid uppackning till en temporär fil ( UNIX-liknande system ), förlorar programmet förmågan att använda argv[0], statusen för suid-biten ignoreras.
Den mest betydande och obestridliga fördelen är accelerationen av att läsa och starta komprimerade filer från lagringsmedia, samt frigöra ytterligare ledigt utrymme på externa enheter. Hittills är alla externa lagringsmedier fortfarande de långsammaste noderna i moderna datorsystem, och "sänker" hastigheten på systemet som helhet, som i de första dagarna av datorteknik. Därför är det omöjligt att inte uppskatta effekten som uppstår när man använder systempaketerare för körbara filer, såsom UPX. Datorsystemet spenderar mycket mindre tid på att läsa och dekomprimera en komprimerad fil i RAM-minnet än att bara läsa samma okomprimerade fil (när man läser från en extern enhet, beräknas tiden som spenderas på operationen i millisekunder, och tiden som går åt för att bearbeta data i RAM är mikro- och nanosekunder).
UPX använder en förlustfri komprimeringsalgoritm som kallas UCL (en gratis implementering av NRV ( Not Really Vanished )-algoritmen) [1] .
UCL-dekomprimeraren är enkel nog att implementeras på några hundra byte och kräver inget extra minne för att köras.
Nästa betydande version av UPX (3.0) använder också LZMA-algoritmen på 32-bitars plattformar.
I tidiga versioner av WinRAR var SFX -moduler packade med UPX.
Arkiveringsmaskiner och kompressorer | |
---|---|
öppet och gratis | |
Fri | |
Kommersiell | |
Kommandorad |