home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Multi-CD Magazin 1994 April
/
MultiCDMagazin0494.iso01.iso
/
sharew
/
packer
/
lzexe91d
/
deutsch.doc
< prev
next >
Wrap
Text File
|
1990-05-07
|
13KB
|
255 lines
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.