Kompression ausführbarer Programmdateien
aus Wikipedia, der freien Enzyklopädie
Kompression ausführbarer Programmdateien darunter versteht man die Kompression von Programmdaten (crunchen) einer ausführbaren Datei (executable). Die gepackten Daten werden mittels einer Auspackroutine zur Laufzeit (runtime) automatisch auf ihre ursprüngliche Größe im Arbeitsspeicher (memory) dekomprimiert (decrunched). Jeder Packalgorithmus hat demzufolge eine andere Entpackroutine. Dies erklärt zumindest teilweise die unterschiedlichen Bytefolgen im Entpacker-Code ausgehend vom Einsprungspunkt (entry point). Warum nutzt man nun ExePacker?
Es ging vor allem darum, Speicherplatz (auf Disketten) zu sparen. Darüberhinaus möchte der Programmautor auch das Reverse Engineering soweit es geht verhindern oder wenn es sich um ein Schadprogramm handelt soll die Erkennung durch Antivirensoftware umgangen werden. Hierbei können neben dem Packen auch andere proprietäre Methoden wie Verschlüsselung eingesetzt werden.
Eine gepackte Programmdatei ist nicht ohne weiteres, von ihrem ungepackten Original zu unterscheiden. Bei der Ausführung wird die ursprüngliche Programmdatei automatisch entpackt und ihr dann die Kontrolle übertragen. Eine komprimierte Programmdatei benötigt dafür:
- weniger Speicherplatz auf dem Datenträger,
- weniger Zeit um die Daten vom Datenträger in den Speicher zu übertragen,
- aber zusätzliche Zeit, um die Programmdaten vor deren Ausführung zu entpacken.
Einen Sonderfall von komprimierten ausführbaren Dateien stellen die Selbstextrahierenden Archive dar. Hier werden die gepackten Dateien nicht über eine externe Anwendung "WinRar", "WinZip" oder andere auf den Datenträger entpackt, sondern intern durch die vorangestellte Entpackroutine.
Eine weitere Sonderstellung nehmen Binder (wrapper) ein. Hierbei handelt es sich um Anwendungsprogramme, welche Packen und Crunchen miteinander verbinden. Ein und/oder mehrere Dateien auf den Datenträger werden zu einer ausführbaren Datei zusammengefasst. Beim Start dieser Datei können dann mehrere Programmdateien, welche zur Laufzeit entpackt werden, gleichzeitig zur Ausführung gebracht werden.
In der Regel gilt, die gepackten Dateien gelangen direkt in den Arbeitsspeicher und benötigen keinen freien Speicher im Dateisystem, um zu starten. Ausnahmen und Sonderfälle bestätigen jedoch diese Regel.
Extrembeispiele selbstentpackender Programmdateien findet man in der Demoszene. Manche Kompressoren wie MuCruncher, kkrunchy und 624 wurden extra für Demos mit einer Größenbegrenzung entworfen. Ein krasses Beispiel ist Crinkler, der für 4096 Bytes-Intros geschaffen wurde und aufgrund der Kompressionszeit und des Speicherverbrauches für sehr viel größere Dateien unbrauchbar ist.
Inhaltsverzeichnis |
[Bearbeiten] Liste von Packprogrammen
[Bearbeiten] PE-Format (32-bit), für Microsoft Windows-Programmdateien (Win9x,WinNT,WinXP)
- ASPack
- CExe v1.0
- Crinkler v0.4a
- exe32pack v1.42
- EXECryptor - Packer und Obfuscator
- eXPressor v1.3
- FSG v2.0
- MEW v1.1 SE
- NeoLite v2.0
- PECompact v1.84
- PECompact v2.xx - neues Konzept mit der Implementierung verschiedener Pack-Algorithmen
- PESpin v1.3
- PEtite v2.2
- PKLite32 v1.1
- Upack v0.399f - Freeware
- UPX v2.93 - Freie Software
- WWPack32 v1.12
- 32Lite v0.3
- NsPack v3.xx - .NET fähig
- .netshrink - nur für Dateien mit .NET Erweiterung gedacht
[Bearbeiten] COM/EXE/SYS-Format, für DOS-Programm- oder Treiberdateien (MsDos v5.0)
- 624 v1.01 (für COM-Dateien < 25KB, nutzt den LZW-Algorithmus)
- LZEXE v1.00 und Pklite v2.01 (die Urväter)
- ComPAck v5.1
- Diet v1.45f
- AvPack v1.22
- ProPack v2.19
- WWPack v3.05b5
- XPack v1.67r
- aPack v0.99 (keines ist besser)
- 32LiTE v0.2 (ähnlich UPX, unterstützt verschiedene DOS-Extender, basiert aber auf aplib)
- UPX
[Bearbeiten] Formate anderer ausführbarer Programmdateien
- 624 - für Executable and Linking Format-Binärdateien unter Linux/i386
- gzexe - benutzt ein Shell-Skript in Kombination mit gzip und läuft auf den meisten Unix-Derivaten
- PuCrunch - für Commodore 64, 16 und VIC 20.
- UPX - unterstützt auch Linux/i386 binaries wie auch einige weniger bekannte Plattformen
[Bearbeiten] Liste von Entpackern und Identifiern
- PEiD
- CUP386 (generischer Entpacker/Debugger, Freeware)
- UNP (spezifischer/generischer Entpacker, Cardware)
- IUP (generischer Entpacker, public domain mit .ASM-Quelle)