UPX


UPX
UPX
Entwickler Markus F.X.J. Oberhumer, László Molnár & John F. Reiser
Aktuelle Version 3.07
(8. September 2010)
Betriebssystem Windows, Linux, BSD, DOS, Atari
Kategorie Encoder
Lizenz GPL
Deutschsprachig nein
upx.sf.net

UPX steht für the Ultimate Packer for eXecutables (engl. für Ultimativer Packer für ausführbare Dateien). UPX ist ein freier (GNU General Public License) Packer für ausführbare Dateien, der eine Reihe von Formaten unterstützt.

UPX eignet sich besonders zur Komprimierung von ELF- (Linux), DOS-EXE (16- und 32-Bit)- , EXE- (Windows) oder auch TOS-Dateien. Im Unterschied zu den mittels weitverbreiteter Komprimierungsverfahren (wie ZIP und RAR) komprimierten Dateien lassen sich mit UPX komprimierte Dateien normal (also ohne vorige Entpackung) ausführen.

Zweck der Komprimierung von ausführbaren Dateien sind verringerte Dateigrößen und unter Umständen kürzere Startzeiten im Vergleich zu einer unkomprimierten Datei. Die kürzeren Ladezeiten ergeben sich, wenn die zusätzlich benötigte Rechenzeit zur Dekomprimierung im Arbeitsspeicher weniger ins Gewicht fällt als das Laden der größeren Datei von der Festplatte oder über ein Netzwerk.

Vorteile dieses Programms gegenüber anderen seiner Art sind vor allem seine teilweise Quelloffenheit – es wird als freie Software (Open Source) vertrieben – seine plattformübergreifende Eigenschaft und seine hohen Packraten.

Inhaltsverzeichnis

Packen ausführbarer Programmdateien

Bei der Kompression ausführbarer Programmdateien werden die Programmdaten gepackt und ihr ein Entpack-Programmteil (Decompressor) vorangehängt, der die eigentlichen Programmdaten entpackt und anschließend startet. Der Entpack-Programmteil ist ein eigenständiges Programm, das gepackte und ungepackte Programme für den durchschnittlichen Anwender ununterscheidbar macht, da für ihn zur Ausführung keine weiteren Schritte nötig sind.

Softwareproduzenten benutzen die Technik aus einer Vielzahl von Gründen; hauptsächlich um den sekundären Speicherbedarf ihrer Anwendungen zu senken, zumal UPX, da es speziell auf ausführbare Programmdateien ausgelegt ist, oft bessere Packraten erzielt als herkömmliche Datenkompressionslösungen wie ZIP, gzip oder bzip2. Das erlaubt es dem Hersteller, mit dem Speicherplatzbedarf ihrer Programme besser im Rahmen des Verbreitungsmediums zu bleiben oder den Zeit- oder Bandbreitenaufwand bei dem Zugriff über das Internet zu minimieren.

Ein weiterer Vorteil von UPX besteht darin, komplette Verzeichnisse (z. B. Programm und zusätzliche Daten, Libraries, Ressourcen) in einer Datei zu bündeln, was z. B. automatische Updates oder die Verteilung in Firmennetzen übersichtlicher, sicherer und einfacher machen kann.

Kompressionstechnik

UPX nutzt eine proprietäre Datenkompressionsbibliothek namens Not-Really-Vanished (NRV). Alternativ kann eine freie Implementierung des NRV-Algorithmus namens UCL verwendet werden. Zudem stehen auch LZMA und zlib als Kompressionsverfahren zur Wahl.

UCL und NRV wurden entworfen, einfach genug zu sein, dass ein Dekompressor in nur wenigen hundert Bytes Code Platz findet. Bei UCL muss zum Entpacken kein zusätzlicher Speicher zugewiesen werden, was einen erheblichen Vorteil darstellt, da dadurch ein mit UPX gepacktes Programm keinen zusätzlichen Speicher benötigt.

Dekompression

UPX kennt beim Entpacken zweierlei Methoden, die Datei kann direkt an Ort und Stelle im Arbeitsspeicher oder in eine temporäre Datei entpackt werden.

Das direkte Entpacken in den Arbeitsspeicher stellt die überlegene Technik dar, ist jedoch nicht auf allen unterstützten Plattformen möglich. Auf den Plattformen, auf denen das direkte Entpacken nicht möglich ist, werden Temporärdateien verwendet, was zusätzlichen Overhead und andere Nachteile mit sich bringt, jedoch das Packen von Programmdateien jeglichen Formates erlaubt. Die Programmdaten werden in eine Temporärdatei entpackt, die dann zur Ausführung gebracht wird. Die Methode, in eine Temporärdatei zu entpacken, bringt eine Reihe von Nachteilen mit sich. Es werden spezielle Rechte wie suid übergangen, der Kommandozeilenparameter argv[0] verliert seine Bedeutung, und es wird Programmen unmöglich, Teile gemeinsam zu nutzen.

Verschleierung

Die Natur oder Funktion einer Programmdatei zu verschleiern ist manchmal erwünscht, um Reverse Engineering zu behindern. EXE-Packer können benutzt werden, um direktes Disassemblieren zu behindern, Zeichenketten zu verbergen und Signaturen zu verändern. UPX ist jedoch kein guter Schutz gegen Reverse-Engineering, da UPX-gepackte Programme durch UPX selbst wieder entpackt werden können und auch leicht durch Debugger/Dumper wiederhergestellt werden können.

Unveränderte UPX-gepackte Programme werden häufig von Antivirenprogrammen als solche erkannt und entpackt.

Nachteile

Die Anwendung von UPX auf Programme kann verschiedene Nachteile mit sich bringen. Zum einen können manche Hilfsprogramme Programmbibliotheks-Abhängigkeiten des gepackten Programms nicht mehr erkennen, da nur noch der statisch gelinkte Dekompressionsteil sichtbar ist. Weiterhin kann UPX die Initialisierungszeiten von Programmen verlängern. Manche Antivirenprogramme behandeln laufzeitkomprimierte Programmdateien als Viren.

UPX-komprimierte Programmdateien haben zudem größere Auswirkungen auf die Systemressourcen. Das Betriebssystem kann kein dekomprimiertes Abbild direkt vom Datenträger lesen (siehe Virtuelle Speicherverwaltung), wie es das im Falle von unkomprimierten ausführbaren Dateien macht. Stattdessen reserviert der UPX-Dekompressor einen Speicherbereich für die entpackten Daten, der zugeordnet wird, solange die Programmdatei geladen bleibt – ob sie verwendet wird oder nicht. Dies verhindert auch das Wiederverwenden der Ressourcen, wenn mehrere Instanzen desselben UPX-komprimierten Programms geladen sind.

Unterstützte Formate

Siehe auch

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • UPX — Dernière version 3.04 (27 septembre  …   Wikipédia en Français

  • UPX — es un compresor de ejecutables gratuito, portable y de alto rendimiento. UPX soporta diferentes formatos de ejecutables, incluyendo programas de Windows 95/98/ME/NT/2000/XP/VISTA y DLLs, programas de DOS, Linux, etc. Contenido 1 Desempaquetando… …   Wikipedia Español

  • UPX — the Ultimate Packer for eXecutables Тип Упаковка исполняемых файлов Написана на C++, Ассемблер Операционная система Microsoft Windows, Linux, MacOS, DOS, Atari Первый выпуск 26 мая 1998 год …   Википедия

  • UPX — Infobox Software name = UPX the Ultimate Packer for eXecutables caption = collapsible = author = developer = released = May 26, 1998 latest release version = 3.03 latest release date = April 27, 2008 latest preview version = latest preview date …   Wikipedia

  • UPX — Ultimate Packer for eXecutables (Computing » Software) * Unapix Entertainment, Inc. (Business » AMEX Symbols) …   Abbreviations dictionary

  • UPX — abbr. Ultimate Packer for Executables …   Dictionary of abbreviations

  • UPX Deutschland GmbH — UPX Deutschland GmbH,   Telefonanbieter …   Universal-Lexikon

  • The Ultimate Packer for eXecutables — UPX the Ultimate Packer for eXecutables Тип Упаковка исполняемых файлов Написана на C++, Ассемблер ОС Microsoft Windows, DOS, 27 апреля 2008 Лицензия GNU GPL Сайт …   Википедия

  • EXE-Packer — Unter Kompression ausführbarer Programmdateien versteht man die Kompression der Programmdaten einer ausführbaren Datei und die Kombination der komprimierten Daten mit einer Dekompressionsroutine zu einer einzigen ausführbaren Datei. Die… …   Deutsch Wikipedia

  • Exe-Packer — Unter Kompression ausführbarer Programmdateien versteht man die Kompression der Programmdaten einer ausführbaren Datei und die Kombination der komprimierten Daten mit einer Dekompressionsroutine zu einer einzigen ausführbaren Datei. Die… …   Deutsch Wikipedia