<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=UPX</id>
	<title>UPX - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=UPX"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=UPX&amp;action=history"/>
	<updated>2026-05-29T14:45:16Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=UPX&amp;diff=55147&amp;oldid=prev</id>
		<title>imported&gt;Polluks: Logo</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=UPX&amp;diff=55147&amp;oldid=prev"/>
		<updated>2025-08-27T12:57:13Z</updated>

		<summary type="html">&lt;p&gt;Logo&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Logo                  = [[Datei:Ultimate Packer for eXecutebles.png]]&lt;br /&gt;
|Screenshot            = [[Datei:UPX screenshot.png|400px]]&lt;br /&gt;
|Beschreibung          = &lt;br /&gt;
|Maintainer            = &lt;br /&gt;
|Hersteller            = Markus F.X.J. Oberhumer, László Molnár &amp;amp; John F. Reiser&lt;br /&gt;
|Erscheinungsjahr      = &lt;br /&gt;
|AktuelleVersion       = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVersionFreigabeDatum = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVorabVersion  = &lt;br /&gt;
|AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
|Betriebssystem        = [[Microsoft Windows|Windows]], [[Linux]], [[Berkeley Software Distribution|BSD]], [[Disk Operating System|DOS]], [[Atari]]&lt;br /&gt;
|Programmiersprache    = [[Assemblersprache|Assembler]], [[C++]]&lt;br /&gt;
|Kategorie             = Encoder&lt;br /&gt;
|Lizenz                = [[GNU General Public License|GPL]]&lt;br /&gt;
|Deutsch               = nein&lt;br /&gt;
|Website               = [https://upx.github.io/ upx.github.io]&lt;br /&gt;
|Dateien               = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;UPX&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;U&amp;#039;&amp;#039;&amp;#039;ltimate &amp;#039;&amp;#039;&amp;#039;P&amp;#039;&amp;#039;&amp;#039;acker for e&amp;#039;&amp;#039;&amp;#039;X&amp;#039;&amp;#039;&amp;#039;ecutables, englisch für &amp;#039;&amp;#039;Ultimativer Packer für ausführbare Dateien&amp;#039;&amp;#039;) ist ein [[Freie Software|freies]] ([[GNU General Public License]]) [[Packprogramm]] für [[ausführbare Datei]]en, das eine Reihe von Formaten unterstützt.&lt;br /&gt;
&lt;br /&gt;
UPX eignet sich besonders zur Komprimierung von Unix-[[Executable and Linking Format|ELF]] (32- und 64-Bit), DOS-EXE (16- und 32-Bit), Windows-[[Portable Executable|PE]] ([[EXE]] und [[Dynamic Link Library|DLL]]) oder auch [[TOS (Betriebssystem)|TOS]]-Dateien. Im Unterschied zu den mittels weitverbreiteter Komprimierungsverfahren (wie [[ZIP-Dateiformat|ZIP]] und [[RAR (Dateiformat)|RAR]]) komprimierten Dateien lassen sich mit UPX komprimierte Dateien normal (also ohne vorige Entpackung) ausführen.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Vorteile dieses Programms gegenüber anderen seiner Art sind vor allem seine teilweise Quelloffenheit – es wird als [[freie Software]] (Open Source) vertrieben – seine [[Plattformunabhängigkeit|plattformübergreifende]] Eigenschaft und seine hohen Packraten.&lt;br /&gt;
&lt;br /&gt;
== Packen ausführbarer Programmdateien ==&lt;br /&gt;
&lt;br /&gt;
Bei der Kompression ausführbarer Programmdateien werden die Programmdaten [[Datenkompression|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.&lt;br /&gt;
&lt;br /&gt;
Softwareproduzenten benutzen die Technik aus einer Vielzahl von Gründen; hauptsächlich um den [[Sekundärspeicher|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-Dateiformat|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.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil von UPX besteht darin, komplette Verzeichnisse (z.&amp;amp;nbsp;B. Programm und zusätzliche Daten, Libraries, Ressourcen) in einer Datei zu bündeln, was z.&amp;amp;nbsp;B. automatische Updates oder die Verteilung in Firmennetzen übersichtlicher, sicherer und einfacher machen kann.&lt;br /&gt;
&lt;br /&gt;
Ab Version 3.09.1 werden erstmals auch unter [[Microsoft Windows]] &amp;#039;&amp;#039;64-Bit&amp;#039;&amp;#039; ([[AMD64|x86-64]]) Programmdateien und -Bibliotheken unterstützt. Diese Funktion gilt derzeit noch als &amp;#039;&amp;#039;experimentell&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;[https://raw.githubusercontent.com/upx/upx/master/NEWS UPX Versionshistorie]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kompressionstechnik ===&lt;br /&gt;
&lt;br /&gt;
UPX nutzt eine [[Proprietäre Software|proprietäre]] [[Datenkompression]]sbibliothek namens &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;ot-&amp;#039;&amp;#039;&amp;#039;R&amp;#039;&amp;#039;&amp;#039;eally-&amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;anished&amp;#039;&amp;#039; (NRV). Alternativ kann eine [[Freie Software|freie]] Implementierung des NRV-Algorithmus namens UCL verwendet werden. Zudem stehen auch [[Lempel-Ziv-Markow-Algorithmus|LZMA]] und [[zlib]] als Kompressionsverfahren zur Wahl.&lt;br /&gt;
&lt;br /&gt;
UCL und NRV wurden entworfen, um einfach genug zu sein, damit ein Dekompressor in nur wenigen hundert [[Byte]]s 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.&lt;br /&gt;
&lt;br /&gt;
=== Dekompression ===&lt;br /&gt;
&lt;br /&gt;
UPX kennt beim Entpacken zweierlei Methoden: die Datei kann&lt;br /&gt;
* direkt an Ort und Stelle im Arbeitsspeicher oder&lt;br /&gt;
* in eine [[temporäre Datei]] entpackt werden.&lt;br /&gt;
&lt;br /&gt;
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 [[Setuid|suid]] übergangen, der Kommandozeilenparameter &amp;lt;code&amp;gt;argv[0]&amp;lt;/code&amp;gt; (Abfrage des eigenen Dateinamens durch ein Programm) verliert seine Bedeutung und es wird Programmen unmöglich, Teile gemeinsam zu nutzen.&lt;br /&gt;
&lt;br /&gt;
== Verschleierung ==&lt;br /&gt;
&lt;br /&gt;
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 [[Disassembler|Disassemblieren]] zu behindern, [[Zeichenkette]]n 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.&lt;br /&gt;
&lt;br /&gt;
Unveränderte UPX-gepackte Programme werden häufig von [[Antivirenprogramm]]en als solche erkannt und entpackt.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
&lt;br /&gt;
Zum einen können manche Hilfsprogramme [[Programmbibliothek]]s-Abhängigkeiten des gepackten Programms nicht mehr erkennen, da nur noch der [[Linker (Computerprogramm)#Statisches Linken|statisch gelinkte]] Dekompressionsteil sichtbar ist. Weiterhin kann UPX die Initialisierungszeiten von Programmen verlängern. Manche [[Antivirenprogramm]]e behandeln laufzeitkomprimierte Programmdateien als [[Computervirus|Viren]].&lt;br /&gt;
&lt;br /&gt;
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 bleibt, solange die Programmdatei geladen ist, vergleichbar mit Speicherbereichen für sonstige Daten, die während der Laufzeit anfallen. Will das Betriebssystem im Rahmen des [[Swapping]]s Teile des Programms aus dem Arbeitsspeicher entfernen, muss es zunächst diese Teile in einen [[Auslagerungsdatei|Auslagerungsspeicher]] schreiben. Auch wird das Wiederverwenden der Ressourcen, wenn mehrere Instanzen desselben UPX-komprimierten Programms geladen sind, verhindert, oder bei Verwendung von [[Kernel Same-page Merging|KSM]] zumindest erschwert.&lt;br /&gt;
&lt;br /&gt;
== Unterstützte Formate ==&lt;br /&gt;
&lt;br /&gt;
* [[atari]]/[[TOS (Betriebssystem)|tos]]&lt;br /&gt;
* [[DJGPP|djgpp2]]/[[COFF|coff]] (32-Bit DOS)&lt;br /&gt;
* watcom/le (32-Bit DOS)&lt;br /&gt;
* [[Disk Operating System|dos]]/[[COM-Datei|com]]&lt;br /&gt;
* [[Disk Operating System|dos]]/[[MZ-Datei|exe]]&lt;br /&gt;
* [[Disk Operating System|dos]]/sys&lt;br /&gt;
* [[Linux]]/[[IA-32|i386]] ([[a.out]] und [[Executable and Linking Format|ELF]])&lt;br /&gt;
* rtm32/[[Portable Executable|pe]]&lt;br /&gt;
* tmt/adam&lt;br /&gt;
* [[win32]]/[[Portable Executable|pe]] ([[EXE]] und [[Dynamic Link Library|DLL]] mit &amp;#039;&amp;#039;nativem&amp;#039;&amp;#039; [[IA-32|x86]] oder [[AMD64|x86-64]] code, &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; aber [[.Net-Framework]]-basierte)&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Kompression ausführbarer Programmdateien]]&lt;br /&gt;
* [[Liste von Datenkompressionsprogrammen]]&lt;br /&gt;
* [[Upack]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://upx.github.io/ UPX-Website]&lt;br /&gt;
* [https://sourceforge.net/projects/upxgui/ UPX GUI (grafische Benutzeroberfläche für UPX)]&lt;br /&gt;
* [https://sourceforge.net/projects/upxshell/ UPX Shell (weitere grafische Benutzeroberfläche für UPX)]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Freie Datenkompressionssoftware]]&lt;br /&gt;
[[Kategorie:Abkürzung]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Polluks</name></author>
	</entry>
</feed>