Privacy Policy Cookie Policy Terms and Conditions UPX - Wikipedia

UPX

aus Wikipedia, der freien Enzyklopädie

UPX
Entwickler: Markus F.X.J. Oberhumer, László Molnár & John F. Reiser
Aktuelle Version: 2.03 (7. November 2006)
Betriebssystem: Windows, Linux, DOS, Atari
Kategorie: Encoder
Lizenz: GPL
Deutschsprachig: nein
Website: upx.sourceforge.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-, EXE- 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 ist die meist kürzere Startzeit im Vergleich zu der nicht komprimierten Datei. Dies liegt daran, dass die Dekomprimierung im Arbeitsspeicher schneller ist als das Laden der größeren Datei von der Festplatte in den Arbeitsspeicher oder gar über das Netzwerk.

Vorteile dieses Programmes gegenüber anderen seiner Art sind vor allem seine Quelloffenheit (Open Source), seine plattformübergreifende Eigenschaft und seine gute Packrate.

Inhaltsverzeichnis

[Bearbeiten] Packen ausführbarer Programmdateien

Bei der Kompression ausführbarer Programmdateien werden die Programmdaten gepackt und ihr ein Entpack-Programmschnipsel vorangehängt, der die eigentlichen Programmdaten entpackt und die Ausführung startet. Der Entpack-Programmschnipsel 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 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.

[Bearbeiten] Die Kompressionstechnik

UPX nutzt einen Datenkompressionsalgorithmus namens UCL, der eine freie Implementierung der proprietären Not-Really-Vanished-Algorithmen (NRV) darstellt.

UCL wurde 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.

[Bearbeiten] Dekompression

UPX kennt beim Entpacken zweierlei Methoden, eine an-Ort-und-Stelle-Methode und die Extraktion in eine temporäre Datei.

Im ersteren Fall wird das Programm direkt in den Arbeitsspeicher entpackt, was die überlegene Technik darstellt, jedoch nicht auf allen unterstützten Plattformen möglich ist. Die verbleibenden machen Gebrauch von Temporärdateien, 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, dann wird open() benutzt um einen file descriptor zu erhalten.

Sobald ein file descriptor da ist, kann die temporäre Datei unlink()ed werden, und der Entpack-Schnipsel nutzt execve() am file handle (via /proc), um den Schnipsel mit dem ausführbaren Abbild der Temporärdatei zu überschreiben.

[Bearbeiten] Nachteile

Die Methode, in eine Temporärdatei zu entpacken, bringt eine Reihe von Nachteilen mit sich:

  • spezielle Rechte wie suid werden übergangen,
  • argv[0] verliert seine Bedeutung,
  • Programmen wird es unmöglich, Teile gemeinsam zu nutzen.

[Bearbeiten] Verschleierung

Die Natur oder Funktion einer Programmdatei zu verschleiern ist manchmal erwünscht, um Reverse Engineering zu behindern. UPX kann benutzt werden, um direktes Disassemblieren zu behindern, Zeichenketten zu verbergen und Signaturen zu verändern. Obwohl dies Reverse Engineering letztendlich nicht ganz verhindern kann, erhöht es den Aufwand doch erheblich.

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

[Bearbeiten] Nachteile

  • Manche Utilities können Programmbibliotheks-Abhängigkeiten des gepackten Programmes nicht mehr erkennen, da nur noch der statisch gelinkte Dekompressionsteil sichtbar ist.
  • UPX kann die Initialisierungszeiten von Programmen verlängern.
  • Manche ältere Antivirenprogramm erkennen einfach alle komprimierten Programmdateien als Viren.
  • UPX-komprimierte Programmdateien haben größere Auswirkungen auf die Systemresourcen. Das Betriebssystem kann kein dekomprimiertes Abbild direkt vom Datenträger lesen (siehe Virtuelle Speicherverwaltung), was es im Falle von unkomprimierten ausführbaren Dateien tut. Stattdessen reserviert der UPX-Stummel 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 des selben UPX-komprimierten Programmes geladen sind.

[Bearbeiten] Unterstützte Formate

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

Andere Sprachen
THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu