home *** CD-ROM | disk | FTP | other *** search
- Dies ist die komplette Dokumentation für LZEXE.
- Einen kurzen Überblick gibt Ihnen README.1ST !
-
- Dokumentation für:
- ------------------
- LZEXE.EXE v0.91 (c) 1989 Fabrice BELLARD
- Kompressionsprogramm für EXE files.
-
- Dieses Programm wurde als Public Domain (FREEWARE) freigegeben. Sie können
- es daher uneingeschränkt benutzen, kopieren und verbreiten. Auch können Sie
- es kommerziell nutzen, z.B. Programme damit bearbeiten, die Sie verkaufen
- wollen. Dagegen ist der Verkauf von LZEXE selbst verboten.
-
- Hardwareanforderungen: PC und Kompatible. Zum Erreichen zügigerer Arbeits-
- geschwindigkeiten wird ein 80286 oder 80386 Mikro-
- prozessor empfohlen.
- Benutzerspeicher (RAM): zum Start von LZEXE sind mindestens 128K erforder-
- lich.
-
- 1 - Einführung
- --------------
-
- Dieses Utility komprimiert sog. EXE-Files, die Bezeichnung für eine be-
- stimmte Gattung ausführbarer PC-Programme. Sie wissen vielleicht, daß es
- bereits eine Menge anderer Kompressionsprogramme für derartige Dateien gibt,
- wie etwa das exzellente PKZIP oder das gute LHARC. Die Besonderheit der hier
- gewählten Methode liegt darin, daß die komprimierten Programme direkt ge-
- startet werden können. Für nahezu alle EXE-Files ist die Dekompressions-
- zeit so kurz, daß sie kaum ins Gewicht fällt. Ergänzend dazu benötigt die
- Dekompression keinen extra Speicherplatz, weder auf dem Datenträger noch
- im Schreib-Lesespeicher (RAM). Es wird einfach der Bereich des RAM genutzt,
- der normalerweise auch für das unkomprimierte Programm reserviert werden
- müßte. Der Kompressionsalgorithmus wurde nicht nur auf Geschwindigkeit,
- sondern auch in puncto Effektivität optimiert: EXE-Files werden beinahe
- immer auf die Größe ihrer geZIPten Gegenstücke redziert. Der Autor arbei-
- tet an künftigen Versionen, von denen er hofft, daß sie sogar noch besser
- werden.
-
- 2 - Benutzung von LZEXE
- -----------------------
-
- Die Benutzung ist sehr einfach: tippen Sie auf der Kommandozeile:
-
- LZEXE [Pfad\]Dateiname[.EXE]
-
- wobei "Dateiname" für den Namen des EXE-Files steht, das sie komprimieren
- möchten. Die Erweiterung (Extension) ".EXE" ist bereits als Standard vor-
- gegeben. Eine Pfadangabe ist optional: sie bezieht sich auf das Verzeich-
- nis, in dem sich die EXE-Datei befindet und in welchem das komprimierte
- File und die temporäre Arbeitsdatei LZTMP.EXE gespeichert werden sollen.
-
- Achtung! Einige Programme heißen lediglich dem Namen nach EXE-Files: für
- DOS charakterisiert nämlich nicht die Endung ".EXE" ein (echtes) EXE-File,
- sondern das Vorhandensein eines Dateikopfes mit den Buchstaben "MZ", ge-
- folgt von Informationen über die Filelänge, den benötigten Speicherplatz,
- etc.... Wenn Sie daher eine COM-Datei einfach in EXE umbenennen, wird
- LZEXE die Bearbeitung dieser Datei verweigern.
-
- Es besteht jedoch eine Möglichkeit, LZEXE dazu zu bringen, auch COM-Files
- zu akzeptieren: benutzen Sie einfach das Utility COMTOEXE vom gleichen
- Autor, welches diesen Typus in EXE-Files umwandelt, (es arbeitet umgekehrt
- wie der externe DOS Befehl EXE2BIN).
-
- Aus Gründen der Sicherheit löscht LZEXE das original EXE-File nicht, sondern
- benennt es stattdessen in Dateiname.OLD um. Darüber hinaus erzeugt LZEXE ein
- temporäres File LZEXE.TMP, das erst nach Ende des Kompressionsvorganges den
- Namen des Originalprogramms erhält.
-
- 3 - Tips zur Benutzung
- ----------------------
-
- Aus verschiedenen Gründen können einige Programme nicht komprimiert werden:
-
- - Die Datei ist kein echtes EXE-File. Lösung: benutzen Sie das Utility
- COMTOEXE.EXE
- - Die Relokationstabelle ist zu umfangreich. Um dies zu verstehen, müs-
- sen Sie die interne Struktur eines EXE-Files kennen: anderes als COM-
- Dateien können solche Programme mehrere Segmente (Datenabschnitte im
- RAM) benutzen. Daher muss es eine Tabelle enthalten, in der die Wer-
- te für beispielsweise Verzweigungen und Aufrufe von Unterprogrammen
- festgehalten sind. Ist die Datei und damit die Relokationstabelle
- sehr groß, kann dies das Kompressionsprogramm überfordern. Es sind bis
- zu 16000 Relokationsadressen vorgesehen, was für nahezu jedes EXE-File
- ausreichen dürfte.
- - Das File, das sie komprimieren möchten, wurde bereits mit LZEXE bear-
- beitet. (Wissen Sie mit LIST.COM oder einem ähnlichen Programm umzu-
- gehen, mit dem man auch Binärdateien anschauen kann, so erkennen Sie
- ein LZEXE-File an der Kennung 'LZ91' nahe dem Programmanfang.)
-
- Beachten Sie, daß es noch ein anderes derartiges Komprimierungsprogramm
- gibt: EXEPACK.EXE von Microsoft, das jedoch weit weniger wirkungsvoll als
- LZEXE arbeitet. LZEXE kann ein mit EXEPACK komprimiertes File weiterverar-
- beiten, wenn Sie zuvor das Utility UPACKEXE benutzen, um die Komprimierung
- von EXEPACK rückgängig zu machen.
-
- - In einigen Fällen ist der Kompressionsfaktor unwesentlich. Dies kommt
- gewöhnlich bei sehr kleinen Dateien (weniger als 2K) vor. Normaler-
- weise ist die Kompression jedoch deutlich spürbar.
-
- - Das EXE-File enthält interne Overlays: derartige Programme können zwar
- komprimiert werden, zeigen jedoch nach dem Start häufig ein Fehlverhal-
- ten, da gewisse nachzuladende Programmteile naturgemäß nicht gefunden
- werden. Ab Version 0.91 entdeckt LZEXE derartige Risiken und weist mit
- einer entsprechenden Meldung darauf hin. Solche Programme sollten Sie
- möglichst nicht komprimieren.
-
- Schwerwiegender ist: einige Programme bewirken in komprimierter Form ein
- "Aufhängen" des Systems:
-
- - Wenn das Programm seine eigene Größe oder Unversehrtheit prüft, (dies
- ist recht selten der Fall).
- - Wenn es Overlays benutzt, die später geladen werden und daher festge-
- legte Positionen innerhalb des Files einnehmen.
- - Bei Programmen, die Windows (Microsoft) benötigen: sie sind keine ech-
- ten EXE-Dateien und arbeiten nach einer Komprimierung nicht mehr kor-
- rekt.
- (Für die Vollständigkeit dieser Liste wird nicht gehaftet.)
-
- Weniger schwerwiegend: verschiedene Programme benutzen Konfigurationsrouti-
- nen, welche den Code modifizieren (z.B. Turbo Pascal). In einem solchen
- Fall konfigurieren Sie am besten zunächst das Programm und komprimieren Sie
- erst anschließend. Behalten Sie immer eine unkomprimierte Fassung als Si-
- cherheitsreserve zurück!
-
- 4 - Technische Anmerkungen (für die Kenner !)
- ---------------------------------------------
-
- Der verwendete Kompressionsalgorithmus basiert auf der bekannten Ziv Lempel
- Methode, welche einen "kreisförmigen" Buffer (ring buffer) benutzt und eine
- baumähnliche Methode zum Auffinden sich wiederholender Byte-Sequenzen. Die
- Kodierung der Position und Länge sich wiederholender Sequenzen wurde mit ei-
- nem Hilfsalgorithmus optimiert, welcher auf der Methode von Huffman basiert.
- Nicht kompakte Bytes bleiben unangetastet, da jede ergänzende Methode, (wie
- "Adaptive Huffman" (bei LHARC) oder Shanon-Fano Bäume (bei PKZIP)) eine weit-
- aus längere Dekompressionszeit zur Folge hätten und vor allen Dingen einen
- viel komplexeren und längeren Dekompressionsteil, welcher den Kompressions-
- faktor erheblich verringern würde.
-
- Die Dekompressionsroutine befindet sich am Ende des komprimierten EXE-Files
- und ist bei Version 0.90 385, bei Version 0.91 330 Bytes lang. Ihre Aufga-
- ben sind:
- - Überprüfung des CRC (bis v 0.90), um die Integrität des Files sicher-
- zustellen (nützlich gegen Viren). Schlägt der Test fehl, erscheint
- eine Meldung "CRC Error". Ab LZEXE v0.91 fehlt dieser Teil, da sich
- die Länge des Files erhöht, sowie die für die Dekomprimierung benö-
- tigte Zeit. Zum zweiten war die CRC-Prüfung nur auf den Dekompressor
- selbst ausgedehnt.
- - Selbstpositionierung ins höhere RAM mit anschließendem Verschieben des
- komprimierten Codes, um ausreichend Platz für das EXE-File zu lassen.
- - Dekomprimierung des Codes, Überprüfung auf Richtigkeit und Angleichung
- der Segmente bei mehr als 64K (ein in puncto Geschwindigkeit schwieri-
- ges Problem!).
- - Dekompression der Relokationstabelle und Aktualisierung der relokati-
- blen (verschiebbaren) Adressen des EXE-File. Die vorliegende Version
- enthält Verbesserungen in Hinblick auf bessere Kompression.
- - Start des Programms und Angleichung der CS, IP, SS, SP Register.
-
- C'est tout !!!
-
- Die Dekompressionsroutine selbst ist ein kleines Juwel der 8086 Programmie-
- rung in Assembler: es dürfte sich von selbst verstehen, daß dies ein ganzes
- Stück harte Arbeit war.
- Doch auch die Kompressionsroutine war nicht viel einfacher, besonders unter
- dem Gesichtspunkt des Setzens all der Zeiger, welche der Dekompressor für
- seine Arbeit benötigt.
-
- 5 - LZEXE version 0.91 und andere Kompressionsprogramme
- -------------------------------------------------------
-
- PKARC (aktuelle version): LZEXE arbeitet erheblich besser; "Crunching"
- (alias "Shrinking" bei PKZIP) sind überholte Al-
- gorithmen ...
- PKZIP v0.92: LZEXE arbeitet in den meisten Fällen effektiver;
- PKZIP v1.02: bei umfangreichen Files schneidet LZEXE besser ab, ansonsten
- ist der Unterschied gering;
- LHARC v1.01: komprimiert mit "freezing" bei kleinen Files besser als LZEXE.
- LARC: LZEXE ist besser.
-
- Wichtige Anmerkungen:
- - Man kann LZEXE nicht ernsthaft mit jenen anderen Produkten vergleichen,
- da die mit meiner Methode komprimierten Files einen Dekompressor enthal-
- ten, der die Programme selbst startet. Zwar ist es richtig, daß die ande-
- ren Kompressionsprogramme selbstextrahierende Archive erzeugen können,
- dies geschieht jedoch auf dem Datenträger, ist verhältnismaßig langsam
- und fügt mehrere Kilobyte zu den komprimierten Dateien hinzu (außer bei
- LARC und LHARC, die lediglich 1 oder 2 KB anhängen, leider aber nur auf
- dem Datenträger dekomprimieren).
- - In nahezu allen Fällen können die erwähnten Kompressionsprogramme ein mit
- LZEXE bearbeitetes File nicht weiter komprimieren, was die hohe Effektivi-
- tät dieser Methode demonstriert.
-
- 6 - Vorausschau des Programmautors
- ----------------------------------
-
- - Ich denke auch an einen automatischen Dokument Dekomprimierer der LESEN.COM
- bzw. LIST.COM-Gattung, welcher sehr nützlich sein würde.
- - Schließlich hoffe ich, einen "universelles" Komprimierungsprogramm zu ent-
- wickeln wie PKZIP oder LHARC, langsamer beim Dekomprimieren als LZEXE aber
- weit besser als die bereits vorhandenen.
-
- 7 - Abschließende Bemerkungen des Programmautors
- ------------------------------------------------
-
- Ich hoffe, daß LZEXE und die Files, die es erzeugt, sehr populär werden als
- gute Basis für weitere Entwicklungen.
-
- Ich übernehme keinerlei Haftung für irgendwelche Datenverluste, die evt. im
- Zusammenhang mit dem Gebrauch von LZEXE entstehen. Ich kann jedoch versi-
- chern: die Algorithmen sind zuverlässig und ich glaube nicht, daß sich noch
- allzu viele Fehler eingeschlichen haben.
-
- Achtung! Vom Komprimieren und Verbreiten kommerzieller, durch Copyright ge-
- schützter Software, rate ich ab. Die Autoren werden dies nicht mögen ...
-
- Falls Sie jedoch FREEWARE oder SHAREWARE entwickeln oder auch ein kommer-
- zielles Produkt, hindert Sie niemand daran, es mit LZEXE zu komprimieren.
- Tatsächlich empfehle ich es ihnen sogar:
- - Ihre EXE-Files werden kleiner und Anwender mögen sogar denken, sie hät-
- ten sie in Assembler programmiert. Ihre Konkurrenten werden über diese
- Software erstaunt sein, welche das leistet, was ihre eigene auch kann,
- aber um 30% kleiner ist. Darüber hinaus haben Sie mehr Platz auf Ihren
- Disketten und Festplatten. Platz ist immer ein Pluspunkt ...
- - Die Kompression wirkt wie ein exzellentes Verschlüsselungssystem, das
- skrupellose Zeitgenossen daran hindert, Ihre Programmtexte zu verändern
- und Ihre Algorithmen zu analysieren. Der einzig gangbare Weg wäre, den
- Dekompressor zu disassemblieren, was, das lassen Sie sich gesagt sein,
- keineswegs eine leichte Aufgabe ist.
-
- Ich hoffe, Sie haben Freude an diesem Utility.
-
- [Anleitung nach der französischen Original-Dokumentation des Autors, Fabrice
- BELLARD, Bearbeitung: Hubert Brentano, Köln]
-
- Wenn Sie mehr über die verwendeten Algorithmen wissen möchten oder bei
- Schwierigkeiten mit dem Programm können Sie den Autor wie folgt erreichen:
-
- Fabrice BELLARD
- 451, chemin du mas de Matour
- 34790 GRABELS (FRANCE)
-
- Das Pseudo des Autors auf RTEL und QBBS lautet: FAB
-
-
- LZEXE v0.91:
- ------------
- - Der Bindestrich "-" kann nun als Teil von Dateinamen verwendet werden.
- - LZEXE zeigt das Vorhandensein interner Overlays an.
- - LZEXE zeigt an, ob eine Datei mit EXEPACK (Microsoft) bearbeitet wurde.
- - Ein Fehler aus Version 0.90 ist beseitigt, der bewirkte, daß Programme
- während der Laufzeit zu viel Speicherplatz belegten.
- - Die Komprimierung der Relokationstabelle wurde verbessert.
- - Die CRC Überprüfung entfällt.
- - Die Größe des Dekompressionsanhangs verringerte sich von 395 auf 330
- Bytes.
-