home *** CD-ROM | disk | FTP | other *** search
/ Boston 2 / boston-2.iso / DOS / HILFEN / TEXTE / LZEXE / LZEXE.DOK < prev    next >
Text File  |  1993-12-01  |  11KB  |  289 lines

  1.  
  2.        LZEXE.EXE v0.91 (c) 1989 Fabrice BELLARD
  3.        Komprimierungsprogramm für EXE-Dateien.
  4.  
  5.        Dieses Programm ist Public Domain (Freeware), Sie können es daher
  6.        frei benutzen, kopieren und weitergeben. Sie dürfen es auch
  7.        kommerziell verwenden, d.h. für Programme die Sie verkaufen
  8.        wollen. Der Verkauf von LZEXE.EXE selbst ist jedoch verboten.
  9.  
  10.        Anforderungen: PC und Kompatible. Rechner mit 80286- oder 80386-
  11.        Prozessor werden jedoch für größere Ausführungsgeschwindigkeit
  12.        empfohlen. Speicherbedarf mindestens 256K freier Arbeitsspeicher.
  13.  
  14.        1-Einleitung
  15.        ------------
  16.  
  17.        Dieses Programm komprimiert ausführbare EXE-Dateien. Es gibt eine
  18.        Reihe anderer Programme für diesen Zweck, zum Beispiel PKZIP oder
  19.        LHARC. Der Vorteil dieses Programms ist jedoch, daß die
  20.        komprimierten Dateien ausführbar bleiben! Für fast alle EXE-
  21.        Dateien ist die Zeit für die Entkomprimierung vernachlässigbar
  22.        klein! Die Entkomprimierung benötigt keinen zusätzlichen
  23.        Speicherplatz auf Diskette/Festplatte oder im Arbeitsspeicher. Es
  24.        wird nur der Speicherbedarf der unkomprimierten Datei benötigt.
  25.        Der Entkomprimierungsalgorithmus wurde auf Geschwindigkeit und
  26.        Effizienz optimiert: EXE-Dateien werden fast auf die Größe
  27.        geZIPter Files reduziert. Ich arbeite an weiteren Versionen, die
  28.        hoffentlich noch bessere Ergebnisse bringen werden.
  29.  
  30.        2-Gebrauch von LZEXE
  31.        --------------------
  32.  
  33.        Der Gebrauch ist sehr einfach. Geben Sie folgenden Befehl ein:
  34.  
  35.        LZEXE Dateiname [Pfad],
  36.  
  37.        wobei 'Dateiname' der Name der zu komprimierenden Datei ist. Die
  38.        Endung .EXE wird automatisch hinzugefügt. Die Angabe von [Pfad]
  39.        ist optional: hier geben Sie an, wo die komprimierte Datei und die
  40.        temporäre Arbeitsdatei 'LZTMP.EXE' gespeichert werden sollen.
  41.  
  42.        Achtung! Manche Dateien heißen nur EXE! Für DOS charakterisiert
  43.        nicht die Endung .EXE eine EXE-Datei, sondern das Vorhandensein
  44.        eines Datei-Headers, der die Buchstaben 'MZ', gefolgt von Angaben
  45.        zu Dateilänge, Speicherplatzbedarf etc. enthält. Wenn Sie also
  46.        einfach eine Datei von COM nach EXE umbenennen, wird sie von LZEXE
  47.        nicht bearbeitet.
  48.  
  49.        Es gibt jedoch einen Weg, um COM-Dateien mit LZEXE zu
  50.        komprimieren: benutzen Sie das Programm COMTOEXE des gleichen
  51.        Autors. Es arbeitet wie das Gegenstück zu EXE2BIN.
  52.  
  53.        Zur größeren Datensicherheit wird die ursprüngliche EXE-Datei von
  54.        LZEXE nicht gelöscht, sondern mit der Endung .OLD umbenannt.
  55.        Zusätzlich wird eine temporäre Datei 'LZTMP.EXE' erzeugt, die erst
  56.        am Ende des Komprimierungsvorganges mit dem ursprünglichen
  57.        Dateinamen umbenannt wird.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.        3-Tips
  75.        ------
  76.  
  77.        Bestimmte Dateien können aus verschiedenen Gründen nicht
  78.        komprimiert werden:
  79.  
  80.        - Die Datei ist keine echte EXE-Datei. Abhilfe: benutzen Sie
  81.          COMTOEXE.
  82.        - Die Sprungtabelle (Relocation Table) ist zu groß. EXE-Dateien
  83.          können im Gegensatz zu COM-Dateien mehrere Speichersegmente
  84.          belegen. Dies erfordert das Vorhandensein einer Tabelle, die die
  85.          nötigen Sprungadressen für Sprünge, Unterprogramme etc. enthält.
  86.          Wird das Programm sehr groß, kann es vorkommen daß der
  87.          Kompressionsalgorithmus durcheinander gerät. LZEXE kann
  88.          Programme mit Tabellen mit bis zu 16000 Adreßeinträgen
  89.          bearbeiten, was für die meisten EXE-Dateien genügen sollte.
  90.        - Die zu komprimierende Datei wurde bereits mit LZEXE komprimiert.
  91.          Es gibt ein anderes Kompressionsprogramm, Microsoft's
  92.          EXEPACK.EXE, das jedoch nicht so effizient wie LZEXE ist. LZEXE
  93.          kann mit EXEPACK komprimierte Dateien noch weiter komprimieren.
  94.        - Manchmal ist die erzielte Kompressionsrate sehr klein. Dies
  95.          kommt vor bei Dateien, die z.B. kleiner als 2 KByte sind.
  96.          Normalerweise ist die Kompressionsrate sehr hoch.
  97.        - Manche komprimierte EXE-Dateien können das System zum Absturz
  98.          bringen, wenn
  99.          - das Programm seine Größe überprüft (z.B. Turbo Debugger),
  100.          - das Programm Selbsttests auf Veränderungen vornimmt,
  101.          - das Programm Overlays benutzt,
  102.          - die Programme für Microsoft's Windows geschrieben sind. Dies
  103.            sind keine echten EXE-Dateien, sie arbeiten in komprimiertem
  104.            Zustand nicht korrekt.
  105.        (Diese Liste ist nicht notwendigerweise vollständig, da ich noch
  106.        nicht mit allen Typen von EXE-Dateien experimentiert habe).
  107.        - Manche Programme (z.B. Turbo Pascal) modifizieren ihren Code
  108.          während der Installation bzw. Konfiguration. Abhilfe: erst
  109.          das Programm installieren bzw. konfigurieren, dann komprimieren.
  110.          Heben Sie sich aber zur Sicherheit immer eine unkomprimierte
  111.          Version auf.
  112.  
  113.        4-Einige technische Anmerkungen
  114.        -------------------------------
  115.  
  116.        Der verwendete Kompressionsalgorithmus basiert auf der Ziv-Lempel-
  117.        Methode und benutzt einen Ringpuffer und eine Baumstruktur zum
  118.        Auffinden von wiederholt vorkommenden Bytefolgen. Die Kodierung
  119.        der Position und Länge dieser Bytefolgen wird durch einen auf der
  120.        Huffman-Methode basierenden Algorithmus optimiert.
  121.        Der Dekompressor ist am Ende der komprimierten EXE-Datei
  122.        untergebracht und ist (in dieser Version) 395 Bytes lang. Seine
  123.        Funktionen sind:
  124.        - Test der Datei auf Veränderungen durch Berechnung einer CRC-
  125.          Prüfsumme (z.B. gegen Virenbefall). Stimmt die Prüfsumme nicht,
  126.          wird die Fehlermeldung "CRC Error" ausgegeben.
  127.        - Verschieben der komprimierten Datei in den oberen Teil des
  128.          Arbeitsspeichers.
  129.        - Entkomprimieren der Datei und Einstellen der Segmente, wenn die
  130.          Dateilänge größer als 64 KByte ist.
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.        - Entkomprimieren der Sprungtabelle und Aktualisieren der
  147.          Adressen in der EXE-Datei.
  148.        - Starten des Programms und Aktualisieren der Register CS, IP, SS
  149.          und SP.
  150.  
  151.        Das ist alles!
  152.  
  153.        Der Dekompressor ist für sich genommen ein kleines Juwel der 8086-
  154.        Assemblerprogrammierung. Natürlich war es ein hartes Stück Arbeit.
  155.        Auch der Kompressor war nicht ganz einfach zu programmieren,
  156.        besonders in Bezug auf die erforderliche Aktualisierung aller
  157.        Zeiger, die der Dekompressor für seine Arbeit braucht.
  158.  
  159.        5-LZEXE und die anderen Kompressionsprogramme
  160.        ---------------------------------------------
  161.  
  162.        PKARC (letzte Version): LZEXE ist besser, "crunching" ("shrinking"
  163.                                bei PKZIP) ist veraltet...
  164.  
  165.        PKZIP 0.92: LZEXE ist gleich effizient bei großen Dateien.
  166.  
  167.        PKZIP 1.02: durch "imploding" besser als LZEXE, aber langsamer.
  168.  
  169.        LHARC 1.01: durch "freezing" besser als LZEXE, aber langsamer.
  170.  
  171.        LARC: LZEXE ist besser.
  172.  
  173.        Bemerkungen:
  174.  
  175.        - Man kann LZEXE nicht wirklich mit diesen anderen Programmen
  176.          vergleichen, da die mit meiner Methode komprimierten Programme
  177.          ja noch einen Dekompressor enthalten. Die anderen
  178.          Komprimierungsprogramme können zwar sogenannte
  179.          'selbstextrahierende Dateien' erzeugen, aber nur auf
  180.          Diskette/Festplatte und mit dem Nachteil, daß die komprimierte
  181.          Datei um einige KByte verlängert wird (Ausnahme: PKARC und
  182.          LHARC, hier werden nur 1 bis 2 KByte benötigt).
  183.        - In fast allen Fällen können die erwähnten Programme Dateien, die
  184.          bereits mit LZEXE komprimiert wurden, nicht weiter komprimieren.
  185.  
  186.        6-Die Zukunft
  187.        -------------
  188.  
  189.        - Ich möchte bald einen Dekompressionsprogramm entwickeln, das die
  190.          ursprüngliche EXE-Datei wiederherstellen kann.
  191.        - Ich möchte den Dekompressor weiter auf Geschwindigkeit und den
  192.          Kompressor auf Effizienz optimieren durch Verkleinerung der
  193.          Sprungtabelle, ich möchte ein Paßwortsystem einführen sowie eine
  194.          spezielle Version für den 80386-Prozessor.
  195.        - Ich möchte einen Dekompressor entwickeln für Dateien, die mit
  196.          Microsoft's EXEPACK.EXE komprimiert wurden.
  197.        - Ich denke nach über die Entwicklung eines automatischen
  198.          Dokumenten-Dekompressors wie z.B. LIST.COM, welcher sehr
  199.          nützlich sein könnte.
  200.        - Schließlich möchte ich ein universelles Komprimierungsprogramm
  201.          wie z.B. PKZIP oder LHARC schreiben, langsamer in der
  202.          Dekompression, aber mit besserer Kompressionsrate.
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.        7-Warnungen
  219.        -----------
  220.  
  221.        Ich hoffe daß LZEXE und die damit erzeugten Dateien sich weit
  222.        verbreiten...
  223.  
  224.        Ich bin nicht verantwortlich in irgendeiner Form für jeglichen
  225.        Datenverlust, der durch den Gebrauch von LZEXE verursacht wird.
  226.        Ich bin jedoch sicher, daß die in LZEXE verwendeten Algorithmen
  227.        zuverlässig sind und nicht sehr viele Bugs in LZEXE stecken. Wenn
  228.        die mit LZEXE komprimierten EXE-Dateien beim ersten Mal
  229.        funktionieren, werden sie dies auch in Zukunft tun!
  230.  
  231.        Warnung! Ich rate davon ab, kommerziell erhältliche und durch
  232.        Copyright geschützte Software zu komprimieren und zu vertreiben.
  233.        Die Autoren könnten es gar nicht mögen...
  234.  
  235.        Wenn Sie jedoch ein Free- oder Shareware-Programm geschrieben
  236.        haben, oder auch ein kommerzielles Programm, können Sie es mit
  237.        LZEXE komprimieren und vertreiben. Ich empfehle es sogar:
  238.  
  239.        - Ihre EXE-Dateien werden kleiner, und die Leute denken
  240.          vielleicht, Sie haben direkt in Assembler programmiert. Ihre
  241.          Konkurrenz wird über Ihre Software staunen, die das gleiche
  242.          leistet, aber 30% kleiner ist. Außerdem ist auf Ihren Disketten
  243.          bzw. Ihrer Festplatte mehr Platz.
  244.        - Komprimierte Programme sind weniger anfällig für Viren.
  245.        - Die Komprimierung ist zugleich eine exzellente Methode zur
  246.          Verschlüsselung. So kann niemand ohne großen Aufwand zu
  247.          treiben Ihre Programmtexte verändern oder kopieren.
  248.  
  249.        Dies ist alles. Ich hoffe sie mögen dieses Programm. Bitte
  250.        bedenken Sie, daß es noch in der Beta-Phase ist!
  251.  
  252.        Fabrice.
  253.  
  254.        Wenn Sie weitere Erläuterungen zu den verwendeten Algorithmen
  255.        haben möchten, oder wenn Schwierigkeiten auftreten, hier ist meine
  256.        Adresse:
  257.  
  258.        Fabrice BELLARD
  259.        451 Chemin du Mas de Matour
  260.        34790 GRABELS (FRANCE)
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.