home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Boston 2
/
boston-2.iso
/
DOS
/
HILFEN
/
TEXTE
/
LZEXE
/
LZEXE.DOK
< prev
next >
Wrap
Text File
|
1993-12-01
|
11KB
|
289 lines
LZEXE.EXE v0.91 (c) 1989 Fabrice BELLARD
Komprimierungsprogramm für EXE-Dateien.
Dieses Programm ist Public Domain (Freeware), Sie können es daher
frei benutzen, kopieren und weitergeben. Sie dürfen es auch
kommerziell verwenden, d.h. für Programme die Sie verkaufen
wollen. Der Verkauf von LZEXE.EXE selbst ist jedoch verboten.
Anforderungen: PC und Kompatible. Rechner mit 80286- oder 80386-
Prozessor werden jedoch für größere Ausführungsgeschwindigkeit
empfohlen. Speicherbedarf mindestens 256K freier Arbeitsspeicher.
1-Einleitung
------------
Dieses Programm komprimiert ausführbare EXE-Dateien. Es gibt eine
Reihe anderer Programme für diesen Zweck, zum Beispiel PKZIP oder
LHARC. Der Vorteil dieses Programms ist jedoch, daß die
komprimierten Dateien ausführbar bleiben! Für fast alle EXE-
Dateien ist die Zeit für die Entkomprimierung vernachlässigbar
klein! Die Entkomprimierung benötigt keinen zusätzlichen
Speicherplatz auf Diskette/Festplatte oder im Arbeitsspeicher. Es
wird nur der Speicherbedarf der unkomprimierten Datei benötigt.
Der Entkomprimierungsalgorithmus wurde auf Geschwindigkeit und
Effizienz optimiert: EXE-Dateien werden fast auf die Größe
geZIPter Files reduziert. Ich arbeite an weiteren Versionen, die
hoffentlich noch bessere Ergebnisse bringen werden.
2-Gebrauch von LZEXE
--------------------
Der Gebrauch ist sehr einfach. Geben Sie folgenden Befehl ein:
LZEXE Dateiname [Pfad],
wobei 'Dateiname' der Name der zu komprimierenden Datei ist. Die
Endung .EXE wird automatisch hinzugefügt. Die Angabe von [Pfad]
ist optional: hier geben Sie an, wo die komprimierte Datei und die
temporäre Arbeitsdatei 'LZTMP.EXE' gespeichert werden sollen.
Achtung! Manche Dateien heißen nur EXE! Für DOS charakterisiert
nicht die Endung .EXE eine EXE-Datei, sondern das Vorhandensein
eines Datei-Headers, der die Buchstaben 'MZ', gefolgt von Angaben
zu Dateilänge, Speicherplatzbedarf etc. enthält. Wenn Sie also
einfach eine Datei von COM nach EXE umbenennen, wird sie von LZEXE
nicht bearbeitet.
Es gibt jedoch einen Weg, um COM-Dateien mit LZEXE zu
komprimieren: benutzen Sie das Programm COMTOEXE des gleichen
Autors. Es arbeitet wie das Gegenstück zu EXE2BIN.
Zur größeren Datensicherheit wird die ursprüngliche EXE-Datei von
LZEXE nicht gelöscht, sondern mit der Endung .OLD umbenannt.
Zusätzlich wird eine temporäre Datei 'LZTMP.EXE' erzeugt, die erst
am Ende des Komprimierungsvorganges mit dem ursprünglichen
Dateinamen umbenannt wird.
3-Tips
------
Bestimmte Dateien können aus verschiedenen Gründen nicht
komprimiert werden:
- Die Datei ist keine echte EXE-Datei. Abhilfe: benutzen Sie
COMTOEXE.
- Die Sprungtabelle (Relocation Table) ist zu groß. EXE-Dateien
können im Gegensatz zu COM-Dateien mehrere Speichersegmente
belegen. Dies erfordert das Vorhandensein einer Tabelle, die die
nötigen Sprungadressen für Sprünge, Unterprogramme etc. enthält.
Wird das Programm sehr groß, kann es vorkommen daß der
Kompressionsalgorithmus durcheinander gerät. LZEXE kann
Programme mit Tabellen mit bis zu 16000 Adreßeinträgen
bearbeiten, was für die meisten EXE-Dateien genügen sollte.
- Die zu komprimierende Datei wurde bereits mit LZEXE komprimiert.
Es gibt ein anderes Kompressionsprogramm, Microsoft's
EXEPACK.EXE, das jedoch nicht so effizient wie LZEXE ist. LZEXE
kann mit EXEPACK komprimierte Dateien noch weiter komprimieren.
- Manchmal ist die erzielte Kompressionsrate sehr klein. Dies
kommt vor bei Dateien, die z.B. kleiner als 2 KByte sind.
Normalerweise ist die Kompressionsrate sehr hoch.
- Manche komprimierte EXE-Dateien können das System zum Absturz
bringen, wenn
- das Programm seine Größe überprüft (z.B. Turbo Debugger),
- das Programm Selbsttests auf Veränderungen vornimmt,
- das Programm Overlays benutzt,
- die Programme für Microsoft's Windows geschrieben sind. Dies
sind keine echten EXE-Dateien, sie arbeiten in komprimiertem
Zustand nicht korrekt.
(Diese Liste ist nicht notwendigerweise vollständig, da ich noch
nicht mit allen Typen von EXE-Dateien experimentiert habe).
- Manche Programme (z.B. Turbo Pascal) modifizieren ihren Code
während der Installation bzw. Konfiguration. Abhilfe: erst
das Programm installieren bzw. konfigurieren, dann komprimieren.
Heben Sie sich aber zur Sicherheit immer eine unkomprimierte
Version auf.
4-Einige technische Anmerkungen
-------------------------------
Der verwendete Kompressionsalgorithmus basiert auf der Ziv-Lempel-
Methode und benutzt einen Ringpuffer und eine Baumstruktur zum
Auffinden von wiederholt vorkommenden Bytefolgen. Die Kodierung
der Position und Länge dieser Bytefolgen wird durch einen auf der
Huffman-Methode basierenden Algorithmus optimiert.
Der Dekompressor ist am Ende der komprimierten EXE-Datei
untergebracht und ist (in dieser Version) 395 Bytes lang. Seine
Funktionen sind:
- Test der Datei auf Veränderungen durch Berechnung einer CRC-
Prüfsumme (z.B. gegen Virenbefall). Stimmt die Prüfsumme nicht,
wird die Fehlermeldung "CRC Error" ausgegeben.
- Verschieben der komprimierten Datei in den oberen Teil des
Arbeitsspeichers.
- Entkomprimieren der Datei und Einstellen der Segmente, wenn die
Dateilänge größer als 64 KByte ist.
- Entkomprimieren der Sprungtabelle und Aktualisieren der
Adressen in der EXE-Datei.
- Starten des Programms und Aktualisieren der Register CS, IP, SS
und SP.
Das ist alles!
Der Dekompressor ist für sich genommen ein kleines Juwel der 8086-
Assemblerprogrammierung. Natürlich war es ein hartes Stück Arbeit.
Auch der Kompressor war nicht ganz einfach zu programmieren,
besonders in Bezug auf die erforderliche Aktualisierung aller
Zeiger, die der Dekompressor für seine Arbeit braucht.
5-LZEXE und die anderen Kompressionsprogramme
---------------------------------------------
PKARC (letzte Version): LZEXE ist besser, "crunching" ("shrinking"
bei PKZIP) ist veraltet...
PKZIP 0.92: LZEXE ist gleich effizient bei großen Dateien.
PKZIP 1.02: durch "imploding" besser als LZEXE, aber langsamer.
LHARC 1.01: durch "freezing" besser als LZEXE, aber langsamer.
LARC: LZEXE ist besser.
Bemerkungen:
- Man kann LZEXE nicht wirklich mit diesen anderen Programmen
vergleichen, da die mit meiner Methode komprimierten Programme
ja noch einen Dekompressor enthalten. Die anderen
Komprimierungsprogramme können zwar sogenannte
'selbstextrahierende Dateien' erzeugen, aber nur auf
Diskette/Festplatte und mit dem Nachteil, daß die komprimierte
Datei um einige KByte verlängert wird (Ausnahme: PKARC und
LHARC, hier werden nur 1 bis 2 KByte benötigt).
- In fast allen Fällen können die erwähnten Programme Dateien, die
bereits mit LZEXE komprimiert wurden, nicht weiter komprimieren.
6-Die Zukunft
-------------
- Ich möchte bald einen Dekompressionsprogramm entwickeln, das die
ursprüngliche EXE-Datei wiederherstellen kann.
- Ich möchte den Dekompressor weiter auf Geschwindigkeit und den
Kompressor auf Effizienz optimieren durch Verkleinerung der
Sprungtabelle, ich möchte ein Paßwortsystem einführen sowie eine
spezielle Version für den 80386-Prozessor.
- Ich möchte einen Dekompressor entwickeln für Dateien, die mit
Microsoft's EXEPACK.EXE komprimiert wurden.
- Ich denke nach über die Entwicklung eines automatischen
Dokumenten-Dekompressors wie z.B. LIST.COM, welcher sehr
nützlich sein könnte.
- Schließlich möchte ich ein universelles Komprimierungsprogramm
wie z.B. PKZIP oder LHARC schreiben, langsamer in der
Dekompression, aber mit besserer Kompressionsrate.
7-Warnungen
-----------
Ich hoffe daß LZEXE und die damit erzeugten Dateien sich weit
verbreiten...
Ich bin nicht verantwortlich in irgendeiner Form für jeglichen
Datenverlust, der durch den Gebrauch von LZEXE verursacht wird.
Ich bin jedoch sicher, daß die in LZEXE verwendeten Algorithmen
zuverlässig sind und nicht sehr viele Bugs in LZEXE stecken. Wenn
die mit LZEXE komprimierten EXE-Dateien beim ersten Mal
funktionieren, werden sie dies auch in Zukunft tun!
Warnung! Ich rate davon ab, kommerziell erhältliche und durch
Copyright geschützte Software zu komprimieren und zu vertreiben.
Die Autoren könnten es gar nicht mögen...
Wenn Sie jedoch ein Free- oder Shareware-Programm geschrieben
haben, oder auch ein kommerzielles Programm, können Sie es mit
LZEXE komprimieren und vertreiben. Ich empfehle es sogar:
- Ihre EXE-Dateien werden kleiner, und die Leute denken
vielleicht, Sie haben direkt in Assembler programmiert. Ihre
Konkurrenz wird über Ihre Software staunen, die das gleiche
leistet, aber 30% kleiner ist. Außerdem ist auf Ihren Disketten
bzw. Ihrer Festplatte mehr Platz.
- Komprimierte Programme sind weniger anfällig für Viren.
- Die Komprimierung ist zugleich eine exzellente Methode zur
Verschlüsselung. So kann niemand ohne großen Aufwand zu
treiben Ihre Programmtexte verändern oder kopieren.
Dies ist alles. Ich hoffe sie mögen dieses Programm. Bitte
bedenken Sie, daß es noch in der Beta-Phase ist!
Fabrice.
Wenn Sie weitere Erläuterungen zu den verwendeten Algorithmen
haben möchten, oder wenn Schwierigkeiten auftreten, hier ist meine
Adresse:
Fabrice BELLARD
451 Chemin du Mas de Matour
34790 GRABELS (FRANCE)