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

  1. Dies ist die komplette Dokumentation für LZEXE.
  2. Einen kurzen Überblick gibt Ihnen README.1ST !
  3.  
  4. Dokumentation für:
  5. ------------------
  6. LZEXE.EXE v0.91 (c) 1989 Fabrice BELLARD
  7. Kompressionsprogramm für EXE files.
  8.  
  9. Dieses Programm wurde als Public Domain (FREEWARE) freigegeben. Sie können
  10. es daher uneingeschränkt benutzen, kopieren und verbreiten. Auch können Sie
  11. es kommerziell nutzen, z.B. Programme damit bearbeiten, die Sie verkaufen
  12. wollen. Dagegen ist der Verkauf von LZEXE selbst verboten.
  13.  
  14. Hardwareanforderungen:  PC und Kompatible. Zum Erreichen zügigerer Arbeits-
  15.                         geschwindigkeiten wird ein 80286 oder 80386 Mikro-
  16.                         prozessor empfohlen.
  17. Benutzerspeicher (RAM): zum Start von LZEXE sind mindestens 128K erforder-
  18.                         lich.
  19.  
  20. 1 - Einführung
  21. --------------
  22.  
  23. Dieses Utility komprimiert sog. EXE-Files, die Bezeichnung für eine be-
  24. stimmte Gattung ausführbarer PC-Programme. Sie wissen vielleicht, daß es
  25. bereits eine Menge anderer Kompressionsprogramme für derartige Dateien gibt,
  26. wie etwa das exzellente PKZIP oder das gute LHARC. Die Besonderheit der hier
  27. gewählten Methode liegt darin, daß die komprimierten Programme direkt ge-
  28. startet werden können. Für nahezu alle EXE-Files ist die Dekompressions-
  29. zeit so kurz, daß sie kaum ins Gewicht fällt. Ergänzend dazu benötigt die
  30. Dekompression keinen extra Speicherplatz, weder auf dem Datenträger noch
  31. im Schreib-Lesespeicher (RAM). Es wird einfach der Bereich des RAM genutzt,
  32. der normalerweise auch für das unkomprimierte Programm reserviert werden
  33. müßte. Der Kompressionsalgorithmus wurde nicht nur auf Geschwindigkeit,
  34. sondern auch in puncto Effektivität optimiert: EXE-Files werden beinahe
  35. immer auf die Größe ihrer geZIPten Gegenstücke redziert. Der Autor arbei-
  36. tet an künftigen Versionen, von denen er hofft, daß sie sogar noch besser
  37. werden.
  38.  
  39. 2 - Benutzung von LZEXE
  40. -----------------------
  41.  
  42. Die Benutzung ist sehr einfach: tippen Sie auf der Kommandozeile:
  43.  
  44.                  LZEXE [Pfad\]Dateiname[.EXE]
  45.  
  46. wobei "Dateiname" für den Namen des EXE-Files steht, das sie komprimieren
  47. möchten. Die Erweiterung (Extension) ".EXE" ist bereits als Standard vor-
  48. gegeben. Eine Pfadangabe ist optional: sie bezieht sich auf das Verzeich-
  49. nis, in dem sich die EXE-Datei befindet und in welchem das komprimierte
  50. File und die temporäre Arbeitsdatei LZTMP.EXE gespeichert werden sollen.
  51.  
  52. Achtung! Einige Programme heißen lediglich dem Namen nach EXE-Files: für
  53. DOS charakterisiert nämlich nicht die Endung ".EXE" ein (echtes) EXE-File,
  54. sondern das Vorhandensein eines Dateikopfes mit den Buchstaben "MZ", ge-
  55. folgt von Informationen über die Filelänge, den benötigten Speicherplatz,
  56. etc.... Wenn Sie daher eine COM-Datei einfach in EXE umbenennen, wird
  57. LZEXE die Bearbeitung dieser Datei verweigern.
  58.  
  59. Es besteht jedoch eine Möglichkeit, LZEXE dazu zu bringen, auch COM-Files
  60. zu akzeptieren: benutzen Sie einfach das Utility COMTOEXE vom gleichen
  61. Autor, welches diesen Typus in EXE-Files umwandelt, (es arbeitet umgekehrt
  62. wie der externe DOS Befehl EXE2BIN).
  63.  
  64. Aus Gründen der Sicherheit löscht LZEXE das original EXE-File nicht, sondern
  65. benennt es stattdessen in Dateiname.OLD um. Darüber hinaus erzeugt LZEXE ein
  66. temporäres File LZEXE.TMP, das erst nach Ende des Kompressionsvorganges den
  67. Namen des Originalprogramms erhält.
  68.  
  69. 3 - Tips zur Benutzung
  70. ----------------------
  71.  
  72. Aus verschiedenen Gründen können einige Programme nicht komprimiert werden:
  73.  
  74.    - Die Datei ist kein echtes EXE-File. Lösung: benutzen Sie das Utility
  75.      COMTOEXE.EXE
  76.    - Die Relokationstabelle ist zu umfangreich. Um dies zu verstehen, müs-
  77.      sen Sie die interne Struktur eines EXE-Files kennen: anderes als COM-
  78.      Dateien können solche Programme mehrere Segmente (Datenabschnitte im
  79.      RAM) benutzen. Daher muss es eine Tabelle enthalten, in der die Wer-
  80.      te für beispielsweise Verzweigungen und Aufrufe von Unterprogrammen
  81.      festgehalten sind. Ist die Datei und damit die Relokationstabelle
  82.      sehr groß, kann dies das Kompressionsprogramm überfordern. Es sind bis
  83.      zu 16000 Relokationsadressen vorgesehen, was für nahezu jedes EXE-File
  84.      ausreichen dürfte.
  85.    - Das File, das sie komprimieren möchten, wurde bereits mit LZEXE bear-
  86.      beitet. (Wissen Sie mit LIST.COM oder einem ähnlichen Programm umzu-
  87.      gehen, mit dem man auch Binärdateien anschauen kann, so erkennen Sie
  88.      ein LZEXE-File an der Kennung 'LZ91' nahe dem Programmanfang.)
  89.  
  90. Beachten Sie, daß es noch ein anderes derartiges Komprimierungsprogramm
  91. gibt: EXEPACK.EXE von Microsoft, das jedoch weit weniger wirkungsvoll als
  92. LZEXE arbeitet. LZEXE kann ein mit EXEPACK komprimiertes File weiterverar-
  93. beiten, wenn Sie zuvor das Utility UPACKEXE benutzen, um die Komprimierung
  94. von EXEPACK rückgängig zu machen.
  95.  
  96.    - In einigen Fällen ist der Kompressionsfaktor unwesentlich. Dies kommt
  97.      gewöhnlich bei sehr kleinen Dateien (weniger als 2K) vor. Normaler-
  98.      weise ist die Kompression jedoch deutlich spürbar.
  99.  
  100.    - Das EXE-File enthält interne Overlays: derartige Programme können zwar
  101.      komprimiert werden, zeigen jedoch nach dem Start häufig ein Fehlverhal-
  102.      ten, da gewisse nachzuladende Programmteile naturgemäß nicht gefunden
  103.      werden. Ab Version 0.91 entdeckt LZEXE derartige Risiken und weist mit
  104.      einer entsprechenden Meldung darauf hin. Solche Programme sollten Sie
  105.      möglichst nicht komprimieren.
  106.  
  107. Schwerwiegender ist: einige Programme bewirken in komprimierter Form ein
  108.                      "Aufhängen" des Systems:
  109.  
  110.    - Wenn das Programm seine eigene Größe oder Unversehrtheit prüft, (dies
  111.      ist recht selten der Fall).
  112.    - Wenn es Overlays benutzt, die später geladen werden und daher festge-
  113.      legte Positionen innerhalb des Files einnehmen.
  114.    - Bei Programmen, die Windows (Microsoft) benötigen: sie sind keine ech-
  115.      ten EXE-Dateien und arbeiten nach einer Komprimierung nicht mehr kor-
  116.      rekt.
  117.           (Für die Vollständigkeit dieser Liste wird nicht gehaftet.)
  118.  
  119. Weniger schwerwiegend: verschiedene Programme benutzen Konfigurationsrouti-
  120. nen, welche den Code modifizieren (z.B. Turbo Pascal). In einem solchen
  121. Fall konfigurieren Sie am besten zunächst das Programm und komprimieren Sie
  122. erst anschließend. Behalten Sie immer eine unkomprimierte Fassung als Si-
  123. cherheitsreserve zurück!
  124.  
  125. 4 - Technische Anmerkungen (für die Kenner !)
  126. ---------------------------------------------
  127.  
  128. Der verwendete Kompressionsalgorithmus basiert auf der bekannten Ziv Lempel
  129. Methode, welche einen "kreisförmigen" Buffer (ring buffer) benutzt und eine
  130. baumähnliche Methode zum Auffinden sich wiederholender Byte-Sequenzen. Die
  131. Kodierung der Position und Länge sich wiederholender Sequenzen wurde mit ei-
  132. nem Hilfsalgorithmus optimiert, welcher auf der Methode von Huffman basiert.
  133. Nicht kompakte Bytes bleiben unangetastet, da jede ergänzende Methode, (wie
  134. "Adaptive Huffman" (bei LHARC) oder Shanon-Fano Bäume (bei PKZIP)) eine weit-
  135. aus längere Dekompressionszeit zur Folge hätten und vor allen Dingen einen
  136. viel komplexeren und längeren Dekompressionsteil, welcher den Kompressions-
  137. faktor erheblich verringern würde.
  138.  
  139. Die Dekompressionsroutine befindet sich am Ende des komprimierten EXE-Files
  140. und ist bei Version 0.90 385, bei Version 0.91 330 Bytes lang. Ihre Aufga-
  141. ben sind:
  142.    - Überprüfung des CRC (bis v 0.90), um die Integrität des Files sicher-
  143.      zustellen (nützlich gegen Viren). Schlägt der Test fehl, erscheint
  144.      eine Meldung "CRC Error". Ab LZEXE v0.91 fehlt dieser Teil, da sich
  145.      die Länge des Files erhöht, sowie die für die Dekomprimierung benö-
  146.      tigte Zeit. Zum zweiten war die CRC-Prüfung nur auf den Dekompressor
  147.      selbst ausgedehnt.
  148.    - Selbstpositionierung ins höhere RAM mit anschließendem Verschieben des
  149.      komprimierten Codes, um ausreichend Platz für das EXE-File zu lassen.
  150.    - Dekomprimierung des Codes, Überprüfung auf Richtigkeit und Angleichung
  151.      der Segmente bei mehr als 64K (ein in puncto Geschwindigkeit schwieri-
  152.      ges Problem!).
  153.    - Dekompression der Relokationstabelle und Aktualisierung der relokati-
  154.      blen (verschiebbaren) Adressen des EXE-File. Die vorliegende Version
  155.      enthält Verbesserungen in Hinblick auf bessere Kompression.
  156.    - Start des Programms und Angleichung der CS, IP, SS, SP Register.
  157.  
  158. C'est tout !!!
  159.  
  160. Die Dekompressionsroutine selbst ist ein kleines Juwel der 8086 Programmie-
  161. rung in Assembler: es dürfte sich von selbst verstehen, daß dies ein ganzes
  162. Stück harte Arbeit war.
  163. Doch auch die Kompressionsroutine war nicht viel einfacher, besonders unter
  164. dem Gesichtspunkt des Setzens all der Zeiger, welche der Dekompressor für
  165. seine Arbeit benötigt.
  166.  
  167. 5 - LZEXE version 0.91 und andere Kompressionsprogramme
  168. -------------------------------------------------------
  169.  
  170. PKARC (aktuelle version): LZEXE arbeitet erheblich besser; "Crunching"
  171.                           (alias "Shrinking" bei PKZIP) sind überholte Al-
  172.                           gorithmen ...
  173. PKZIP v0.92: LZEXE arbeitet in den meisten Fällen effektiver;
  174. PKZIP v1.02: bei umfangreichen Files schneidet LZEXE besser ab, ansonsten
  175.              ist der Unterschied gering;
  176. LHARC v1.01: komprimiert mit "freezing" bei kleinen Files besser als LZEXE.
  177. LARC:        LZEXE ist besser.
  178.  
  179. Wichtige Anmerkungen:
  180. - Man kann LZEXE nicht ernsthaft mit jenen anderen Produkten vergleichen,
  181.   da die mit meiner Methode komprimierten Files einen Dekompressor enthal-
  182.   ten, der die Programme selbst startet. Zwar ist es richtig, daß die ande-
  183.   ren Kompressionsprogramme selbstextrahierende Archive erzeugen können,
  184.   dies geschieht jedoch auf dem Datenträger, ist verhältnismaßig langsam
  185.   und fügt mehrere Kilobyte zu den komprimierten Dateien hinzu (außer bei
  186.   LARC und LHARC, die lediglich 1 oder 2 KB anhängen, leider aber nur auf
  187.   dem Datenträger dekomprimieren).
  188. - In nahezu allen Fällen können die erwähnten Kompressionsprogramme ein mit
  189.   LZEXE bearbeitetes File nicht weiter komprimieren, was die hohe Effektivi-
  190.   tät dieser Methode demonstriert.
  191.  
  192. 6 - Vorausschau des Programmautors
  193. ----------------------------------
  194.  
  195. - Ich denke auch an einen automatischen Dokument Dekomprimierer der LESEN.COM
  196.   bzw. LIST.COM-Gattung, welcher sehr nützlich sein würde.
  197. - Schließlich hoffe ich, einen "universelles" Komprimierungsprogramm zu ent-
  198.   wickeln wie PKZIP oder LHARC, langsamer beim Dekomprimieren als LZEXE aber
  199.   weit besser als die bereits vorhandenen.
  200.  
  201. 7 - Abschließende Bemerkungen des Programmautors
  202. ------------------------------------------------
  203.  
  204. Ich hoffe, daß LZEXE und die Files, die es erzeugt, sehr populär werden als
  205. gute Basis für weitere Entwicklungen.
  206.  
  207. Ich übernehme keinerlei Haftung für irgendwelche Datenverluste, die evt. im
  208. Zusammenhang mit dem Gebrauch von LZEXE entstehen. Ich kann jedoch versi-
  209. chern: die Algorithmen sind zuverlässig und ich glaube nicht, daß sich noch
  210. allzu viele Fehler eingeschlichen haben.
  211.  
  212. Achtung! Vom Komprimieren und Verbreiten kommerzieller, durch Copyright ge-
  213. schützter Software, rate ich ab. Die Autoren werden dies nicht mögen ...
  214.  
  215. Falls Sie jedoch FREEWARE oder SHAREWARE entwickeln oder auch ein kommer-
  216. zielles Produkt, hindert Sie niemand daran, es mit LZEXE zu komprimieren.
  217. Tatsächlich empfehle ich es ihnen sogar:
  218.    - Ihre EXE-Files werden kleiner und Anwender mögen sogar denken, sie hät-
  219.      ten sie in Assembler programmiert. Ihre Konkurrenten werden über diese
  220.      Software erstaunt sein, welche das leistet, was ihre eigene auch kann,
  221.      aber um 30% kleiner ist. Darüber hinaus haben Sie mehr Platz auf Ihren
  222.      Disketten und Festplatten. Platz ist immer ein Pluspunkt ...
  223.    - Die Kompression wirkt wie ein exzellentes Verschlüsselungssystem, das
  224.      skrupellose Zeitgenossen daran hindert, Ihre Programmtexte zu verändern
  225.      und Ihre Algorithmen zu analysieren. Der einzig gangbare Weg wäre, den
  226.      Dekompressor zu disassemblieren, was, das lassen Sie sich gesagt sein,
  227.      keineswegs eine leichte Aufgabe ist.
  228.  
  229. Ich hoffe, Sie haben Freude an diesem Utility.
  230.  
  231. [Anleitung nach der französischen Original-Dokumentation des Autors, Fabrice
  232. BELLARD, Bearbeitung: Hubert Brentano, Köln]
  233.  
  234. Wenn Sie mehr über die verwendeten Algorithmen wissen möchten oder bei
  235. Schwierigkeiten mit dem Programm können Sie den Autor wie folgt erreichen:
  236.  
  237.              Fabrice BELLARD
  238.         451, chemin du mas de Matour 
  239.           34790 GRABELS (FRANCE)
  240.  
  241. Das Pseudo des Autors auf RTEL und QBBS lautet: FAB
  242.  
  243.  
  244. LZEXE v0.91:
  245. ------------
  246. - Der Bindestrich "-" kann nun als Teil von Dateinamen verwendet werden.
  247. - LZEXE zeigt das Vorhandensein interner Overlays an.
  248. - LZEXE zeigt an, ob eine Datei mit EXEPACK (Microsoft) bearbeitet wurde.
  249. - Ein Fehler aus Version 0.90 ist beseitigt, der bewirkte, daß Programme
  250.   während der Laufzeit zu viel Speicherplatz belegten.
  251. - Die Komprimierung der Relokationstabelle wurde verbessert.
  252. - Die CRC Überprüfung entfällt.
  253. - Die Größe des Dekompressionsanhangs verringerte sich von 395 auf 330
  254.   Bytes.
  255.