Exe-Packer ASPack Im Rahmen einer Diskussion im SAVE-Forum über die Sicherheit von Shareware-Programmen gegen Versuche des sog. Crackens wurde die Möglichkeit des Einsatzes von Exe-Packern angesprochen. Cracker versuchen Shareware-Produkte derart zu modifizieren, daß etwaige Einschänkungen der Shareware-Versionen nicht mehr weiter bestehen. Auch gibt es Versuche, die Algorithmen zur Verifizierung von Freischaltcodes für Shareware-Programme auszuspionieren und so Generatoren für Freischaltcodes zu entwickeln oder gültige Zufallscodes zu generieren. Der Cracker bedient sich hierfür in der Regel verschiedener Werkzeuge, wie Debuggern und Dekompilierern, die es ihm ermöglichen, Einblick in den Maschinencode des Programms zu gewinnen. Ein Exe-Packer hingegen ist ein Programm, welches es vermag, ausführbare Dateien zu komprimieren und einen Programmteil zur Dekomprimierung voranzustellen, so daß ein solches Programm zwar stets gepackt gespeichert wird, zur Ausführung aber von dem vorangestellten Entpacker in den Arbeitsspeicher dekomprimiert wird. Dieser Vorgang geschieht für den Anwender transparent, fällt also nicht auf. Man beachte die Abgrenzung zu Generatoren von selbstentpackenden Archiven. Diese sind lediglich zum komprimierten Transport der Dateien gedacht und entpacken ihren Inhalt nicht direkt zur Ausführung in den Arbeitsspeicher, sondern in der Regel auf die Festplatte. Nun erschweren solche Exe-Packer weniger erfahrenen Crackern das Dekompilieren des Programms, da der Maschinencode nur zur Laufzeit vorliegt und von den gängigen Tools nicht entpackt werden kann. Ein Cracken solcher Programme bedarf weiter mehr Erfahrung, zunächst muß wohl in den meisten Fällen die Komprimierung gecrackt werden. Nicht jeder "einfache" Cracker hat Kenntnis und Zeit für solche Aktionen. Jedoch ersetzt der Einsatz eines solchen Tools natürlich nicht weitere Maßnahmen, wie beispielsweise eine sichere Berechnung und Verschlüsselung der Registrierschlüssel bei Shareware-Produkten. Aber ein Großteil der wenig professionellen Cracker wird an einem mit Exe-Packern komprimierten Programm wohl scheitern. Ein weiterer Vorteil des Exe-Packers ist die geringe Größe des ausführbaren Programms. Neben der Ersparnis an Speicherplatz verringert dies in der Regel auch die Ladezeit des Programms. Das Entpacken des komprimierten Codes in den Arbeitsspeicher nimmt gewöhnlich weniger Zeit in Anspruch, als das Lesen des sonst weit größeren Programms von der Festplatte. Bei der Ausführung von Programmen über das LAN oder WAN reduziert die Verwendung eines Exe-Packers den nötigen Datentransfer. Ich möchte hier ein solches Programm zum Komprimieren von ausführbaren Dateien vorstellen: ASPack ist ein Exe-Packer für Windows 95/98/NT Programme. Die Homepage von ASPack findet sich auf http://www.entechtaiwan.com/aspack.htm . Das Programm wird als Shareware vertrieben. Die Shareware-Version kann die üblichen 30 Tage lang getestet werden. Sie steht auf der oben genannten Homepage als selbstinstallierende Datei oder in einem ZIP-Archiv zum Download bereit. Die Installation ist unproblematisch. Das Programm verfügt über eine ansprechende grafische Oberfläche und kann alternativ von der Kommandozeile gestartet werden. Die Komprimierung eines Programms erfolgt in drei Schritten: - Auswahl der Programmdatei - Komprimier-Vorgang mit automatischem Backup der Originaldatei - Test des neu Erzeugten Programms und Möglichkeit, das Backup zu löschen Durch einige Optionen läßt sich der Komprimier-Vorgang an die eigenen Anforderungen anpassen. Das Programm ist durch die wenigen benötigten Schritte und die Beschränkung auf die wirklich nötigen Optionen handlich und übersichtlich. Lediglich eine Online-Hilfe fehlt. Die Bedeutung der Programmoptionen muß der Anwender also der beiliegenden Datei readme.txt entnehmen. Weitere Tips enthält die Datei faq.txt. Alle Vorgänge und Optionen können durch Kommandozeilenoptionen eingestellt werden. Somit kann das Programm automatisch z.B. aus Batch-Dateien gestartet werden. Ein Aufruf wie beispielsweise ASPack.exe c:\MyProject\*.* /Q komprimiert alle ausführbaren Dateien im angegebenen Verzeichnis und beendet das Programm danach. Weitere Schalter steuern alle Programm-Optionen. Aber auch eine Unterstützung des Kontextmenüs im Windows-Explorer ist vorhanden. Als Sprache der Benutzeroberfläche kann u.a. auch Deutsch gewählt werden. Während des Pack-Vorgangs kann der Fortschritt der Komprimierung und das Komprimierverhältnis überwacht werden. Ein Testlauf ergab zum Beispiel folgende Werte: Zu Packen war eine ca. 1 MB große mit Borland Delphi erzeugte Programmdatei. Diese wurde in ca. 40 Sekunden (200 MHz CPU) auf etwa 360 kB komprimiert. Natürlich sind weitere Komprimierungen, z.B. das Packen in ein ZIP-Archiv nun nicht mehr allzu effektiv. Während die 360 kB große, vorkomprimierte Datei ein ca. 350 kB großes ZIP-Archiv ergibt, wäre die 1.000 kB große Originaldatei von ZIP nur auf ca. 440 kB komprimiert worden. Das stellt die Leistungsfähigkeit des von ASPack verwendeten Komprimierverfahrens deutlich unter Beweis. Die Größe der Dekomprimier-Routine, die dem Programm hinzugefügt wird liegt laut Anbieter übrigens unter 1 kB. Die Dateien können nicht auf gewöhnlichem Weg dekomprimiert werden. ASPack komprimiert nicht nur EXE-Dateien, sondern auch DLL, OCX, DPL und BPL (letztere beiden sind Borland-spezifische Dateiformate). Es ist nicht zwingend nötig, daß eine komprimierte EXE-Datei nur komprimierte DLL-Dateien einbinden müßte. Damit ist es also kein Problem, eine komprimierte EXE-Datei auszuliefern, die später mit einer beliebigen dynamisch gebundenen Laufzeitbibliothek arbeiten soll (z.B. MFC, VBRUN). ASPack unterstützt ausführbare Dateien die mit folgenden Entwicklungsplattformen erzeugt wurden: Microsoft Visual C++, Visual Basic, Inprise (Borland) Delphi, C++ Builder, und andere Win32 Compiler. Probleme bei der Ausführung gepackter Programme traten bei meinen Testläufen bisher nicht auf. Der Autor gibt überdies in der Datei faq.txt Tips zum Crack-sicheren Gestalten von Shareware. Beispielweise durch mehrfaches (mehrschichtiges) Komprimieren mit ASPack. Die Entwicklung weiterer Technologien und Tools zur Abwehr von Cracking wird in Aussicht gestellt. Das Preis-Leistungsverhältnis des Produkts fällt zugunsten des Anwenders aus: Es werden drei verschiedene Lizenzmodelle angeboten (Runtime-Gebühren werden nicht erhoben, Stand 01.05.1999): - Einzel-Lizenz für privaten Gebrauch und Freeware-Produkte USD 29 - Einzel-Lizenz für Shareware-Produkte USD 49 - Mehrplatz-Lizenz uneingeschränkt USD 179 Die Registrierung ist unkompliziert und schnell über den Registrierservice RegSoft (www.regsoft.com) möglich. Das wohl bekannteste Konkurrenzprodukt "Shrinker" der Firma BlincInc Corp. (www.blinkinc.com) kostet zum Vergleich seit dem 1.3.1999 ca. 230.- US$ (Einzellizenz). Ein kurzer Testlauf des Produktes Shrinker ergab einen ähnlichen Leistungsumfang wie bei ASPack. Die 1 MB große Testdatei vermochte Shrinker jedoch nur auf 520 kB zu reduzieren. Dafür komprimiert Shrinker schneller und unterstützt auch die Kompression von 16-bit und Real Mode DOS Programmen. --------- Beitrag von: Oliver Grahl (oli@o-grahl.de)