[Demotool] kode kompressor - Extremer EXE Packer

  • Beim Schreiben von Demos im 1k, 4k, 64k Bereich ist der letzte Schritt das Komprimieren der PE (.exe) Datei. Ich habe mir dazu dieses kleine Tool gebaut.

    Funktionsweise
    Man lädt eine exe und kodek (Abkürzung) erstellt davon 3 Kopien und probiert die zur Zeit besten 3 Packer aus. Das sind farbrauschs "kkrunchy", MatCodes "mpress" und schließlich MEW, ein experimenteller Packer. kodek führt alle Packvorgänge mit den stärksten Einstellungen durch. Nach den 3 Durchläufen (einfach ein wenig warten) wird dann die kleinste erreichte Größe in Byte, die Kompressionsrate (% der originalen Datei) und der beste Packer angezeigt. Das ganze wird noch einmal auf einer Progressbar gezeigt und kodek teilt auch mit, in welcher Sparte man sein Programm einreichen könnte (1,4,64,PC Demo). Schließlich hat man natürlich noch die Option, die gepackte Datei zu speichern.

    Einsatz
    Für kleine Demos, wer nicht weiß was das ist sollte das Programm auch nicht benutzen, da es auch Fehler geben kann, die bei großen Programmen oder Abhängigkeiten zum Versagen führen. Wer jetzt versucht AutoIt Exen damit zu komprimieren hat den Sinn komplett verfehlt :D

    Virenscanner
    Wer immer noch glaubt ein Virenscanner würde schützen und einen solchen installiert hat, wird wahrscheinlich nicht lange Freude an kodek haben. Dazu kann ich nur sagen: Pech. Wer den beigelegten Programmen nicht traut, kann sie sich gerne ausm Internet laden (einfach googeln), ist aber nicht nötig, denn wer weiß was mpress oder kkrunchy ist, dem geht das Urteil des Virenscanners sowieso sonstwo vorbei :D (die meisten gepackten Programme werden von vorneherein als schädlich abgestempelt).

    Screenshot (ein kleines Testprogramm von mir, kodek schrumpt es auf 15% seiner Ursprungsgröße ein: unter 1,5k!)
    [Blockierte Grafik: http://o27.img-up.net/shotba28.jpg]

  • Melden die Antiviren Programme immer bei solchen Code Kompressoren? Wollte es mir runterladen, aber Avast hat mich daran gehindert.

  • Hi,

    Zitat

    Melden die Antiviren Programme immer bei solchen Code Kompressoren? Wollte es mir runterladen, aber Avast hat mich daran gehindert.

    ja, und das ist nicht mal verkehrt!
    IdR. packen sich diese Programme selbst, man (selbst und natürlich auch der Virenscanner) hat also keine Chance, herauszufinden, welcher Code sich hinter dem gepackten File verbirgt.
    Ob es jetzt wirklich helfen würde, den Packer-Sourcecode zu veröffentlichen, damit den sich jeder selbst compilieren kann, lasse ich mal dahingestellt. :whistling:
    Die Frage stellt sich jetzt natürlich wieso man überhaupt DIESE Packer braucht, Antwort s. minx´ens Startpost!
    Wenn du ein sowieso schon eingestampftes File von 1,2KB auf 1024Byte komprimieren musst, dann ist dir auch die Warnung von Avast schnurz....höchstwahrscheinlich hast du auf deiner Maschine dann sowieso kein Avast :D

  • 454 Tage und 183 Downloads seit dem letzten Release. Es hat sich einiges getan. Statt einfach nur ein plumper Packer-Wrapper zu sein, ist kodek 2 (wird bald released) tatsächlich zu gebrauchen.

    Mein großes Ziel ist es, spätestens nächstes Jahr eine Demo in Perseus zu schreiben und auch (wenigstens) einzureichen. Damit das überhaupt möglich ist, musste kodek noch mehr können.

    Schritt 1: Die Demo

    Die Demo (oder die Test-Demo) besteht aus 3 Teilen: Der Perseus Main Executable, einem Mini (70k raw) Musikplayer für das extra für dieses Demotool kreierte Codec CMF (Compact Music Format) und die Musikdatei als CMF (~17k raw, 2 Minuten Techno/HandsUp).

    Schritt 2: Der erste Waschgang

    CMF enthält einen Packer nach PAQ6 Algo. Also ziemlich krasse Kompression. Bis jetzt wurde noch nichts gepackt, aber jetzt wird alles gepackt. Am Ende dieses Schrittes haben wir vier Dateien: Den Unpacker (~14,5k, bereits per MEW 11 SE komprimiert), die Perseus Main Executable (3,52k comp/MEW UND comp/CMF), den Player (13,3k comp/MEW UND comp/CMF) und zu guter Letzt die Musik selbst (7,27k comp/CMF). Wenn man mal die Größen mit Schritt 1 vergleicht, hat das Paket schon mächtig abgespeckt.

    Schritt 3: Linken

    Hier kommt ein neues Feature ins Spiel, das früher als Standard-Feature für Perseus gedacht war: UniLink. Damit kann man alles gegen alles linken. Am Ende dieses Schrittes steht eine einzelne Executable, die alle Teile hält. Beim Ausführen werden die Teile automatisch entpackt, entpackt und ausgeführt und am Ende wieder gelöscht :) . Die gelinkte Executable ist jetzt ca. 50k groß (d.h. der UniLink stub ist ca 11k groß - daran wird gearbeitet).

    Schritt 4: Finales Packen

    UPX ist toll und vor allem tolerant. Es kommt mit den merkwürdigsten Executables zurecht (siehe AutoIt :D ). Deswegen wird die gelinkte Executable mit UPX gepackt. Und fertig. Die finale Größe beträgt 43k.

    Fazit

    Durch geschicktes Programmieren in Perseus (für den Test habe ich einfach das heillos unoptimierte 2048-Spiel aus den Examples genommen) lässt sich die Größe der Main Executable mindestens vierteln. Aber selbst jetzt sind zur 64k Grenze noch >20k Platz. Das ist eine Menge, wenn man weiß wie man sie nutzen kann ;) .

    kodek 2 gibt es, sobald die erste Demo fertig ist und sich das Dings somit im Einsatz bewährt hat :thumbup: