Kompression ausführbarer Programmdateien


Kompression ausführbarer Programmdateien

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 komprimierten Daten werden mittels der Dekompressionsroutine zur Laufzeit automatisch auf ihre ursprüngliche Größe im Arbeitsspeicher dekomprimiert und die ursprünglichen Programmdaten ausgeführt. Komprimierte ausführbare Programmdateien werden auch als gepackte Programmdateien bezeichnet.

Inhaltsverzeichnis

Ziele

Ziele der Komprimierung von ausführbaren Dateien sind verringerte Dateigrößen, um im Rahmen des Verbreitungsmediums zu bleiben (z. B. einer Diskette), und meist kürzere Startzeiten, falls die Dekomprimierung im Arbeitsspeicher stattfindet. Für manche Programmautoren geht es bei der Komprimierung ausführbarer Dateien darum, das Reverse Engineering zu erschweren, indem direktes Disassemblieren behindert, Zeichenketten verborgen und Signaturen verändert werden. Im Falle von Schadprogrammen ist das Ziel oftmals, die Erkennung durch Antivirenprogramme zu verhindern. Dabei wird die Kompression ausführbarer Programmdateien meist mit anderen Methoden der Verschleierung, wie beispielsweise Verschlüsselung, kombiniert. Gepackte Programme ohne weitere Verschleierungsmechanismen werden jedoch häufig von Antivirenprogrammen als solche erkannt, entpackt und überprüft. Manche ältere Antivirenprogramme klassifizieren gepackte Programmdateien generell als Schadprogramme.

Eine gepackte Programmdatei ist für Laien von ihrem ungepackten Original zur Laufzeit kaum zu unterscheiden. In der Regel gilt, dass die gepackten Dateien beim Starten direkt in den Arbeitsspeicher gelangen und keinen freien Speicher im Dateisystem benötigen, um zu starten. Abhängig von den Eigenschaften des Betriebssystems ist es für die Entpackprogramme manchmal erforderlich, temporäre Programmdateien auf dem Datenträger anzulegen, die dann gestartet werden. Bei der Ausführung wird die ursprüngliche Programmdatei automatisch entpackt und ihr dann die Kontrolle übertragen. Bei manchen Packprogrammen, wie beispielsweise UPX mit dem UCL-Algorithmus, erfordern die gepackten Programmdateien auch zur Laufzeit nicht mehr Hauptspeicher als das nicht gepackte Programm.

Eine gepackte Programmdatei benötigt weniger Speicherplatz auf dem Datenträger, weniger Zeit, um über das Netzwerk geladen und in den Hauptspeicher zu übertragen zu werden, aber zusätzliche Zeit, um die Programmdaten vor deren Ausführung zu entpacken. Aufgrund der Geschwindigkeit heutiger Prozessoren und der damit verbundenen schnellen Dekompression überwiegen meist die Vorteile durch die geringere Dateigröße. Die Verwendung gepackter Programmdateien geht jedoch zurück, da der Vorteil bei der Dateigröße heutzutage bei steigenden Speicherkapazitäten und schnellerer Netzwerke an Bedeutung verliert.

Einen Sonderfall von gepackten ausführbaren Dateien stellen die Selbstextrahierenden Archive dar. Hier werden die gepackten Dateien ebenfalls nicht über ein externes Dekompressionsprogramm auf den Datenträger entpackt, sondern intern durch die vorangestellte Entpackroutine. Ziel der Komprimierung ist meist eine kompakte Zusammenstellung eines aus mehreren, nicht notwendigerweise ausführbaren Dateien bestehenden Installationspakets. Oftmals ist der Entpackvorgang und die Übertragung der Kontrolle an ein Einrichtungsprogramm aus dem Installationspaket für den Benutzer erkennbar.

Eine weitere Sonderstellung nehmen Binder (Wrapper-Programme) ein. Hierbei handelt es sich um Anwendungsprogramme, die mehrere ausführbare Programmdateien komprimieren und zu einer ausführbaren Datei miteinander verbinden. Beim Start dieser Datei können dann mehrere Programmdateien, die in der Datei enthalten sind und zur Laufzeit entpackt werden, gleichzeitig zur Ausführung gebracht werden. Binder-Programme werden oft verwendet, um Nutzprogramme mit Schadprogrammen zu verbinden, so dass beim Start des Nutzprogrammes unbemerkt auch das Schadprogramm gestartet wird.

Extrembeispiele selbstentpackender Programmdateien findet man in der Demoszene. Manche Kompressoren wie MuCruncher, kkrunchy und 624 wurden für Demos mit einer Größenbegrenzung (in der Größenordnung weniger Kilobytes) entworfen. Die Spezialisierung dieser Kompressoren geht soweit, dass diese aufgrund der Kompressionszeit und des Speicherverbrauches für sehr viel größere Dateien unbrauchbar sind.

Liste von Packprogrammen

Dieser Artikel oder Abschnitt besteht hauptsächlich aus Listen, an deren Stelle besser Fließtext stehen sollte.

PE-Format (32-bit), für Microsoft Windows-Programmdateien (Win9x, WinNT, WinXP):

  1. ANDpakk2 v0.18 – Freeware
  2. ASPack v2.12 – Proprietär
  3. BeRoEXEPacker
  4. BIN-crypter 1.0.3.0 – Freeware
  5. MPRESS 2.18 64bit fähig - Freeware
  6. CExe v1.0
  7. Crinkler v1.1
  8. exe32pack v1.42
  9. EXECryptor – Packer und Obfuscator– Proprietär
  10. ExeBundle v3.xx - Proprietär
  11. ExeStealth v4.xx - Proprietär
  12. eXPressor v1.3
  13. FSG v2.0 – Freeware
  14. kkrunchy v0.23 – Freeware
  15. MEW v1.1 SE – Freeware
  16. NeoLite v2.0
  17. PECompact v3.03.19 – Proprietär
  18. PESpin v1.3 64bit fähig - Freeware
  19. PEtite v2.2
  20. PKLite32 v1.1
  21. RLpack – Packer und Obfuscator – Proprietär
  22. Themida – Packer und Obfuscator – Proprietär
  23. Upack v0.399f – Freeware
  24. XComp/XPack – Freeware
  25. UPX v3.08 – Freie Software
  26. WWPack32 v1.12
  27. 32Lite v0.3
  28. Yoda's Crypter 1.2 – Packer und Obfuscator Freeware
  29. NsPack v3.xx – .NET fähig
  30. VMProtect
  31. Obsidium
  32. YZPack 2.0 – Freeware
  33. .netshrink – nur für Dateien mit .NET Erweiterung gedacht


COM/EXE/SYS-Format, für DOS-Programm- oder Treiberdateien (MsDos v5.0):

  1. 624 v1.01 (für COM-Dateien < 25KB, nutzt den LZW-Algorithmus)
  2. LZEXE v1.00 und Pklite v2.01
  3. ComPAck v5.1
  4. Diet v1.45f
  5. AvPack v1.22
  6. ProPack v2.19
  7. WWPack v3.05b5
  8. XPack v1.67r
  9. aPack v0.99
  10. 32LiTE v0.2 (ähnlich UPX, unterstützt verschiedene DOS-Extender, basiert aber auf aplib)
  11. UPX


Formate anderer ausführbarer Programmdateien:

  1. 624 – für Executable and Linking Format-Binärdateien unter Linux/i386
  2. gzexe – benutzt ein Shell-Skript in Kombination mit gzip und läuft auf den meisten Unix-Derivaten
  3. PuCrunch – für Commodore 64, 16 und VIC 20.
  4. UPX – unterstützt auch Linux/i386 binaries wie auch einige weniger bekannte Plattformen
  5. Java Archive - mit zip komprimierter Bytecode für die Ausführung von Java Programmen
  6. ProGuard – verkleinert Bytecode für die plattformübergreifende Java Virtual Machine

Liste von Entpackern und Identifiern

  • PEiD
  • ExEinfo PE by A.S.L. (Identifier mit Entpacker Info)
  • CUP386 (generischer Entpacker/Debugger, Freeware)
  • UNP (spezifischer/generischer Entpacker, Cardware)
  • IUP („Intelligent Executable Unpacker“, generischer Entpacker, gemeinfrei mit .ASM-Quelle)
  • RL!Unpackers (spezifische Entpacker, u.a. für upack)

Siehe auch


Wikimedia Foundation.

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

  • Verlustbehaftete Kompression — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   Deutsch Wikipedia

  • Verlustfreie Kompression — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   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

  • 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

  • Laufzeitpacker — 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

  • Dateiarchivierung — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   Deutsch Wikipedia

  • Dateikompression — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   Deutsch Wikipedia

  • Datenkomprimierung — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   Deutsch Wikipedia

  • Datenreduktion — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   Deutsch Wikipedia

  • Datenreduktionsverfahren — Datenkompression oder Datenkomprimierung ist die Anwendung von Verfahren zur Reduktion des Speicherbedarfs von Daten bzw. zur Vermeidung von Datenaufkommen, bspw. während der Übertragung von Daten. Die Datenmenge wird reduziert, indem eine… …   Deutsch Wikipedia