secureSWF Benutzerhandbuch

Inhalt

Einführung
Installation
Minimale Systemvoraussetzungen
secureSWF nutzen
    Projektdateien
        Die Dateien speichern
        Schutzpresets
    Umbenennung von Identifiern
        Umbenennungsstufe
        Aggressives Umbenennen
        ActionScript-Keyword nutzen
        Umbenennungsregeln
        Zusätzliche Umbenennung
        Warnungen nach der Verarbeitung
    Code-Schutz
        Code-Transformation
            Statement-Level-Randomisierung
            Kontrollstruktur-Verschleierung
            Dynamic Code Wrapping
            Abbruch von Funktionsaufrufen
        Optimierung
        Verschlüsselung von String-Literalen
        Verschlüsseltes Domain Locking
Erstellen von verschlüsselten Loadern
    Das Erstellen von verschlüsselten Loadern
Stack Trace Deobfuscator
Troublshooting
    Troubleshooting für die Umbenennung von Identifiern
Befehlszeilen-Interface
    Windows
    OS X
    Linux

Einführung

Kindisoft secureSWF v3.2 bietet die folgenden Features, damit Sie Ihr ActionScript komfortabel schützen können:

  • Alle Flash- und Flex-Versionen unterstützt:
    secureSWF unterstützt jetzt Flash v4 bis CS4 von Adobe und Flex v1.5 bis v3, ebenfalls von Adobe. Das schließt die ActionScript-Versionen 1, 2 und 3 ein.

  • Umbenennung von Identifiern:
    secureSWF benennt fast jeden Identifier (einschließlich Klassen, Namen von Symbolinstanzen und sogar Frame-Labels) in Ihrer/n SWF-Datei(en) in kürzere, bedeutungslose Namen um, die nicht darstellbare Zeichen enthalten.

  • Automatische Auswahl von Identifiern:
    secureSW entscheidet automatisch, welche Identifier sich gefahrlos umbenennen lassen, und welche nicht, wodurch die Code-Verschleierung einfacher denn je wird.

  • Stoppt Flash-Decompiler:
    secureSWF stoppt alle bekannten Flash-Decompiler und Disassembler durch die folgenden fortschrittlichen Verfahren:

    • Kontrollstruktur-Verschleierung.
    • Statement-Level-Randomisierung.
    • Dynamic code wrapping.
    • Abbruch von Funktionsaufrufen.

  • String-Verschlüsselung:
    secureSWF hilft Ihnen, Ihre Flash- und Flex-Applikation vor einer Vielzahl Sicherheitsgefahren zu schützen, indem es die Verschlüsselung von String-Literalen anbietet.

  • Zugriffsbeschränkung:
    secureSWF stops all known decompilers and disassemblers using the following advanced mechanisms:

    • Verschlüsseltes Domain Locking.
    • Erstellung von verschlüsselten Loadern.

  • Verarbeitungs-Presets:
    Sie müssen sich nicht mit einzelnen Konfigurationsoptionen auseinandersetzen, um das gewünschte Ergebnis zu erzielen. Sie können eines der verfügbaren Presets auswählen, die von aggressivem Schutz bis zur Dateigrößenreduzierung reichen.

  • SWC Support:
    secureSWF unterstützt vorkompilierte SWC-Komponentendateien.

  • Build-Integration:
    secureSWF nutzt XML-Projektkonfigurationsdateien, ein Befehlszeilen-Interface und Ant Task, damit Sie die Verschleierung besser in Ihren Build-Prozess integrieren können.

Zum Anfang

Installation

Um secureSWF zu installieren, extrahieren Sie die Dateien einfach in einen Ordner Ihrer Wahl. Sie müssen lediglich sicherstellen, dass Sie die vollen Schreibrechte in diesem Ordner besitzen. Danach können Sie secureSWF starten, indem Sie secureSWF.exe in Windows, secureSWF.app in OS X, und secureSWF in Linux (Sie müssen die Datei ggf. erst ausführbar machen) doppelklicken.

secureSWF nimmt keine Änderungen an Ihrem System vor (wir sehen das als Feature). Daher können Sie es durch ein Löschen des Ordners deinstallieren.

Minimale Systemvoraussetzungen

Die minimalen Systemvoraussetzungen für secureSWF sind:

  • 500MHz Prozessor oder besser.
  • 10 MB Festplattenspeicher(75 MB für Windows Stand-alone-Paket).
  • 512 Mb of RAM.
  • Java VM 1.5 oder neuer (im Windows Stand-alone-Paket enthalten, in OS X ab Werk installiert).
  • Minimale Bildschirmauflösung: 1024x768.
Zum Anfang

secureSWF nutzen

Die grafische Nutzeroberfläche von secureSWF besteht aus vier Hauptsektionen; Projektdateien, Identifier-Umbenennung, Schutzoptionen, und Zusammenfassung der Operationen.

secureSWF

Zum Anfang

Projektdateien

secureSWF wurde entwickelt, um entweder eine einzelne SWF-Datei, oder mehrere, miteinander interagierende SWF-Dateien zu verarbeiten. Die Projektdateien-Sektion ermöglicht es Ihnen, eine oder mehrere SWF-Dateien zum Schutz hinzuzufügen. Um zu beginnen, klicken Sie auf den "Hinzufügen"-Button und wählen Sie die SWF-Datei(en) aus, die Sie schützen möchten. Alternativ können Sie die SWF-Datei auch aus Ihrem Dateibrowser in secureSWF hineinziehen.

Project Files

Jetzt können Sie direkt auf den "SWF-Dateien schützen"-Button in der oberen rechten Ecke klicken, um die SWF-Dateien zu schützen und zu speichern. Alternativ können Sie auch eines der Schutzpresets auswählen, das Ihnen zusagt.



Die Dateien speichern

Sie können mit den Optionen im Kasten "Ausgabeoptionen" die Methode auswählen, mit der die neuen geschützten SWF-Dateie(en) gespeichert werden sollen. Dieser Schritt ist optional, da secureSWF nach den Speicheroptionen fragen wird, wenn Sie auf den "SWF-Dateien schützen"-Button klicken und sie noch nicht eingestellt wurden. Es folgt eine Beschreibung jeder Methode:

Output options


  • Ausgabedatei in Ordner speichern: Die geschützte(en) SWF-Datei(en) werden im gewählten Ordner mit ihren ursprünglichen Dateinamen gespeichert. Wenn eine Datei mit selbem Namen im Ordner existiert, wird sie überschrieben.

  • Prefix zu Dateinamen hinzufügen: Die geschützte(n) SWF-Dateie(n) werden im selben Ordner gespeichert, indem sich die Ursprungsdateien befinden, aber ein Präfix ihrer Wahl (Standard ist "secure_") wird am Anfang jedes Dateinamens hinzugefügt.

  • Postfix zu Dateinamen hinzufügen: Die geschützte(n) SWF-Dateie(n) werden im selben Ordner gespeichert, indem sich die Ursprungsdateien befinden, aber ein Postfix ihrer Wahl (Standard ist "_secure") wird am Anfang jedes Dateinamens hinzugefügt.

Zum Anfang

Schutzpresets

Sie müssen sich nicht mit den Einstellungen auseinandersetzen und können auch einfach eines der Schutzpresets wählen. Sie können secureSWF so einstellen, dass es eine aggressiv geschützte SWF-Datei ausgibt, oder etwa die Dateigröße verringert. Es folgt eine Beschreibung jedes Presets:

Identifiers Renaming

Am Aggressivsten:
Alle Optionen werden auf das Maximum gestellt. Benennt alle Identifier um, schaltet Statement-Level-Randomisierung ein, setzt Kontrollstruktur-Verschleierung und Dynamic Code Wrapping auf Maximum, und schaltet Abbruch von Funktionsaufrufen ein.. Es schaltet auch Code-Optimierung ein und entfernt Metadaten. Das Nutzen des Am Aggressivsten-Presets könnte in manchen Fällen nicht funktionierende SWF-Dateien generieren.

Standard (Default-Einstellung):
Die beste Balance aus Schutz, Leistung und generierter Dateigröße. Benennt Identifier um, die nach eingehender Analyse als sicher eingestuft wurden, setzt Kontrollstruktur-Verschleierung auf 20%, setzt Dynamic Code Wrapping auf Mittel und schaltet Abbruch von Funktionsaufrufen ein. Es schaltet auch Code-Optimierung ein und entfernt Metadaten. Die Nutzung des Standard-Presets garantiert die Funktionsunfähigkeit aller Decompiler und ist das empfohlene Preset.

Sicher:
Falls Sie mit den vorigen Presets Probleme haben, versuchen Sie das Sicher-Preset. Während die generierten SWF-Dateien nicht im selben Maße wie bei den anderen Presets geschützt werden, wird der angewandte Schutz hoch genug sein, um Decompiler zu verwirren und sie am Erfolg zu hindern.

Beste Größe:
Sie können secureSWF nutzen, um die Größe Ihrer SWF-Dateien zu reduzieren. Das wird erreicht, indem alle Codetransformations-Features abgeschaltet werden, Identifier in kürzere Namen (normal ein bis zwei Buchstaben) umbenannt, der Bytecode optimiert und die Metadaten entfernt werden.

Test:
Schaltet alle Optionen ab. Nur zum Troubleshooting nutzbar.

Zum Anfang

Umbenennung von Identifiern

Eines der mächtigsten Features in secureSWF ist die Möglichkeit, so gut wie jeden Identifier in Ihrer SWF-Datei umzubenennen, von Variablen und Funktionsnamen bis zu Frame-Labels und Symbolnamen, zusätzlich zu AS3 und AS2-Klassen. Nicht nur das, denn secureSWF entscheidet automatisch, welche Identifier sich sicher umbenennen lassen, und welche nicht. secureSWF kann folgende Identifier umbenennen:

  • Lokale Variablen und Funktionen
  • Funktionsparameter (werden entfernt)
  • Instanznamen: Videoclips, Textfelder und Buttons.
  • Frame Labels (werden entfernt)
  • Textfeld-Variablen
  • Global-Variablen
  • Zielpfad-Strings wie "_level0/a_mc/b_mc"
  • AS2/AS3-Pakete, Klassen und Klassen-Member.

Identifier Renaming


Um Identifier-Umbenennung einzuschalten, stellen Sie sicher, dass unter Identifier-Umbenennung ein Häkchen gesetzt ist. Es gibt 6 Registerseiten (2 für AS3) in der Identifier-Umbenennungssektion:

  • Alle: Zeigt alle Identifier in der SWF-Datei/den SWF-Dateien in einer baumähnlichen Hierarchie an (außer AS2-Klassen-Member).
  • Lokale Identifier [nur AS2]: Zeigt eine Tabelle aller lokalen Variablen und Funktionen in der/den SWF-Datei(en) mit ihrer Position und Typ.
  • Labels: zeigt eine Tabelle aller Frame-Label und Anker in der/den SWF-Datei(en), zusammen mit der Position jedes Frame-Labels.
  • Instanznamen [nur AS2]: Zeigt eine Tabelle aller Symbolinstanznamen in der/den SWF-Datei(en) mit ihrer Position und Typ.
  • Globale Identifier [nur AS2]: zeigt alle globalen Identifier (Variablen und Funktionen, auf die mit dem Keyword "_global" zugegriffen wird) in jeder SWF-Datei und den AS2-Klassennamen an.
  • Klassen-Member [nur AS2]: zeigt alle Identifier an, die in AS2-Klassen gefunden werden.
Zum Anfang

Umbenennungsstufe

secureSWF hilft Ihnen, zu entscheiden, welche Identifier sich sicher umbennen lassen. Sie können die Umbenennungsstufe Normal ändern, um entweder alles umzubenennen oder nur Identifier umzubenennen, die von String-Literalen in keinster Weise referenziert werden.

Identifier Renaming

Aggressives Umbenennen

Aggressives Umbenennen verwandelt Ihre Identifier in Zeichenketten, die Decompiler aus der Bahn werfen, Code-Formatier täuschen, und vor allem die Leser des Codes verwirren. Wenn dieses Feature eingeschaltet ist, können Identifiernamen einfache Zahlen und Operatoren wie +, /, *, ?, !, und so weiter sein. Neue Identifier können auch Namen erhalten, die aus einem Whitespace wie dem Leerzeichen, Tab, oder vielen weiteren ASCII-Zeichen, die nicht dargestellt werden, bestehen.

Aggressives Umbenennen wird eine Ziffer oder eines der 51 Symbole (wie &, $, #, Backspace, Enter, usw.) als erstes Zeichen für den Identifier wählen. Dies stellt sicher, dass die neuen Identifiernamen für ActionScript unzulässig sind. Wenn Sie weniger als 61 Identifier in Ihrer ActionScript-Datei haben, werden alle neuen Namen nur 1 Zeichen lang und entweder eine Zahl oder ein Symbol sein.

Mit v3.2 haben Sie jetzt die Kontrolle über Aggressives Umbenennen. In vorigen Versionen war das Feature stets eingeschaltet. Jetzt wird es standardmäßig für AS2 Projekte ein- und für AS3 Projekte ausgeschaltet.

Bei der Ausschaltung von Aggressivem Umbenennen werden alle neuen Identifiernamen in Zahlen und ein „_-„ Präfix (Ohne Anführungsstriche) verwandelt. Dies macht die neuen Namen für ActionScript ungültig, aber für XML weiterhin gültig. Sie werden die Option zur Abschaltung von Aggressivem Umbenennen praktisch finden, wenn Sie XML-Daten mit Flex anbinden.

ActionScript-Keyword nutzen

Wenn dieses Feature eingeschaltet ist, wird das Umbenennungsverfahren reservierte ActionScript-Wörter (Keywords) wie switch, case, if, while, do...usw. für 38 der neuen Identifiernamen verwenden. Es wird die Identifier, die diese Namen erhalten werden, zufällig auswählen. Diese Option ist für sowohL AS2- und AS3-Projekte standardmäßig eingeschaltet.

Umbenennungsregeln

Sie können Regeln hinzufügen, um gewisse Identifier von der Umbenennung aus- oder einzuschließen. Regeln setzen Ihre anderen getroffenen Wahlen sowie die automatische Auswahl von secureSWF außer Kraft. Um eine Regel hinzuzufügen, klicken Sie auf den Regeln-Button im Registerreiter Identifier-Umbenennung. Wählen Sie aus, ob diese Regel die gefundenen Identifier ein- oder ausschließen soll. Und geben Sie ein Muster ein, um Identifier auszuwählen. Zum Beispiel - um alle Klassennamen im Paket com.kindisoft.api vor der Umbenennung zu schützen, geben Sie “com.kindisoft.api.*" ein. Und um die Klassen-Member ebenfalls auszuschließen, nutzen Sie “com.kindisoft.api.**”. Klicken Sie dann auf den Hinzufügen-Button.

Zusätzliche Umbenennung

Optionen in Zusätzliche Umbenennung benennen oder entfernen Identifier, die nicht im Identifier-Baum bzw. der Tabelle erscheinen:

  • Geschützte Namespaces:
    Diese Identifier werden vom Compiler hinzugefügt, um intern Klassen zu referenzieren. Diese Identifier sind ziemlich lang, da der Compiler das Paket und den Klassennamen nutzt, um sie zusammenzusetzen. secureSWF gibt ihnen kürzere, bedeutungslose Namen. Die Umbenennung geschützter Namespaces beeinflusst die Applikation nicht.

  • Funktionsparameter:
    Funktionsparameter in AS2 und AS3 werden in Register konvertiert und dann im Code nicht länger genutzt. Die Funktionsdefinition behält aber weiterhin ihre Namen. Das Aktivieren dieser Option entfernt sie.

  • Generieren einer Zuweisungstabelle:
    secureSWF kann jetzt eine Zuweisungstabelle der ursprünglichen und neuen Identifiernamen generieren. Die Zuweisungstabelle wird mittels des Musters protectedFileName_map.xml generiert und im selben Pfad wie die geschützte Datei gespeichert. Wenn diese Option aktiviert ist, wird für jede Datei eine Zuweisungstabelle generiert. Sie können die Zuweisungstabelle im Stack Trace Deobfuscator-Tool nutzen, um Fehlermeldungen in Ihren Ausgabedateien zu übersetzen. Bewahren Sie die Zuweisungstabelle an einem sicheren Ort auf und verbreiten Sie sie nicht..

Warnungen nach der Verarbeitung

Wenn Sie SWF-Dateien verarbeiten (durch das Klicken des "SWF-Dateien schützen"-Buttons) wird secureSWF prüfen, ob immer noch Strings in den SWF-Dateien sind, die zu den Identifiern passen. Wenn ein String zu einem Identifier passt, erscheint eine Warnmeldung. Es wird empfohlen, in diesem Fall "Auswahl löschen und neu verarbeiten" zu klicken. secureSWF wird dies automatisch machen, wenn "Warnungen beheben" aktiviert ist.

Identifier Renaming

Zum Anfang

Code-Schutz

Code-Transformation

secureSWF bietet vier verschiedene Methoden, die separat oder zusammen angewandt werden können, um Ihren Quellcode vor Reverse Engineering und Dekompilierung zu schützen. Jedes Schutzverfahren ist mit allen Flash Playern von v5 bis v9 kompatibel und wurde separat auf die Fähigkeit, alle bekannten Decompiler und Disassembler funktionsunfähig zu machen, getestet. Es folgt eine Beschreibung jedes Verfahrens, zusammen mit seinen Vorteilen und Nachteilen:

Code Transofrmation

Statement-Level-Randomisierung

Strukturiert die Bytecode-Anweisungen, aus denen ein ActionScript-Statement besteht, zufällig neu - wodurch es fast unmöglich wird, den Quellcode zu dekompilieren. Die Beeinträchtigung von Leistung und Dateigröße hängen vom Quellcode ab. Ein Code-Block, der keine Verzweigungen besitzt (zum Beispiel If-Statements, For-Schleifen oder Funktionsdefinitionen) wird kleiner und schneller ausführbar werden. Auf der anderen Seite werden zusätzliche Bytecode-Anweisungen hinzugefügt, um mit den Verzweigungen umzugehen, was keine Beeinträchtigung der Leistung und nur eine kleine Vergrößerung der SWF-Dateigröße zur Folge hat.

Kontrollstruktur-Verschleierung

Fügt zusätzliche Verzweigungen zum Bytecode hinzu, die Decompiler und Disassembler verwirren. Dieses Verfahren erhöht die Dateigröße der SWF-Datei abhängig von der gewählten Intensität. Sie können die Intensität zwischen 10% und 100% setzen: Eine 10%ige Intensität generiert eine kleinere SWF-Datei, während 100%ige Intensität zu einer besser geschützten SWF-Datei führen wird. Unsere Testergebnisse haben ergeben, dass selbst eine 10%ige Intensität in den meisten Fällen alle Decompiler funktionsunfähig macht.

Dynamic Code Wrapping

Umgibt ActionScript-Blöcke mit Verzweigungen und Müll-Bytes, die Decompiler und Disassembler täuschen. Die Beeinträchtigung von Größe und Leistung bei diesem Verfahren ist vernachlässigbar. Sie können Code Wrapping dreistufig einstellen - auf Minimum, Medium oder Maximum. Der Grad des Codewrappings bestimmt die Größe des hinzugefügten Codes. Nutzen Sie maximales Codewrapping für maximalen Schutz, und die Minimaleinstellung für eine kleinere Datei.

Abbruch von Funktionsaufrufen

Erschwert es einem Decompiler, herauszufinden, welche Parameter einem Funktionsaufruf übergeben werden.

Zum Anfang

Optimierung

Indem Identifier in kurze Namen (ein bis zwei Buchstaben) geändert und Code-Optimierungsverfahren angewendet werden, kann secureSWF auch genutzt werden, um SWF-Dateien zu generieren, die kleiner sind und schneller laufen als die Originale.

Verschlüsselung von String-Literalen

Während Verschleierung den logischen Teil des Codes schützt, bleiben wichtige Daten wie Zugangspasswörter und sensible URLs weiterhin klar als Text in der SWF-Datei einsehbar. Angreifer können die SWF-Datei einfach mit einem Texteditor öffnen (und die SWF-Datei, falls komprimiert, vorher dekomprimieren) und die String-Literale in Ihrem Code einsehen.

secureSWF ermöglicht Ihnen, die String-Literale in Ihrer SWF-Datei auszuwählen, sie in der SWF-Datei mithilfe eines sehr sicheren, symmetrischen Verschlüsselungsalgorithmus zu verschlüsseln, und sie dann nur bei Gebrauch zur Laufzeit entschlüsseln zu lassen. Bitte beachten Sie, dass dies jedes Mal zu einem zusätzlichen Overhead führt, wenn auf einen String zugegriffen wird.

Um dieses Feature zu nutzen, müssen Sie die Strings in der Tabelle finden. Sie zeigt alle String-Literale, die Häufigkeit der Nennung, und ihre Position. Machen Sie ein Häkchen bei den Strings, die Sie verschlüsseln möchten.

Zum Anfang

Verschlüsseltes Domain Locking

Das Einfügen eines verschlüsselten Domain Locks in Ihrer/n SWF-Datei(en) wird die Chancen, dass Ihre Applikation offline oder auf anderen Webseiten genutzt wird, drastisch verringern. Die Applikation wird einfach nicht laufen, wenn sie an einen anderen Ort kopiert wurde, der dem Domain Lock nicht entspricht.

Was dieses Feature wirklich verlässlich macht, ist die Tatsache, dass die Orte (URLs oder Domains), auf die Sie das Lock angewandt haben, innerhalb der SWF-Datei verschlüsselt sind und nur zur Laufzeit entschlüsselt werden. Dadurch wird es ein sehr aufwändiger und langwieriger Prozess, herauszufinden, was passiert und es zu ändern - so aufwändig, dass es einfacher ist, die Applikation einfach neu zu schreiben.

Domain Locking funktioniert in AS2 und AS3 auf unterschiedliche Art und Weisen. Nutzen Sie bei ActionScript 2 die URL oder ihren Anfang, um den Lock zu aktivieren. Wenn Sie zum Beispiel möchten, dass die Applikation nur auf website.com laufen soll, müssen Sie "http://www.website.com/" und "http://website.com" eingeben. Sie sollten ggf. auch "https://" hinzufügen. Das wird Nutzern gestatten, die Applikation zu verwenden, solange die URL , von der sie läuft, mit "http://www.website.com/" oder "http://website.com/" beginnt.

Sie können auch genauer werden und einen Ordner festlegen. Zum Beispiel können Sie "http://www.website.com/ordner/" und "http://website.com/ordner" angeben. Jetzt muss die SWF-Datei im Ordner "ordner" oder seinen Unterordnern auf website.com liegen.

Um schließlich Nutzern zu ermöglichen, Ihre Applikation auch lokal auszuführen, fügen Sie "file://" zur Domainliste hinzu.

Für ActionScript sollten Sie den Domainnamen nutzen, nicht die URL. Zum Beispiel: Geben Sie "website.com" und "www.website.com" ein, um Nutzern die Ausführung der Applikation zu ermöglichen, wenn sie auf website.com gehostet ist. Sie können bei AS3 keinen Ordner oder Unterordner festlegen.

Domain locking

Um Nutzern zu ermöglichen, Ihre SWF-Dateien lokal auszuführen, fügen Sie "localhost" zur Domainliste für ActionScript 3 hinzu.

Stellen Sie sicher, dass Sie alle Domains und ihre Variationen hinzugefügt haben, von denen aus Nutzer Ihre Applikation ausführen können sollen.

Zum Anfang

Erstellen von verschlüsselten Loadern

Dieses Tool hilft Ihnen, die Chancen, dass Ihre SWF-Dateien heruntergeladen oder offline genutzt werden, leicht zu verringern. Es erstellt einfach eine neue SWF-Datei, die Ihre ursprüngliche SWF-Datei dynamisch hineinlädt.

Um die Effektivität und Zuverlässigkeit dieses Features zu verbessern, werden Name und Ort der ursprünglichen SWF-Datei verschlüsselt. Zusätzlich dazu können Sie die Dateinamenerweiterung der ursprünglichen SWF-Datei in irgendeinen String ändern (z.B. .mp3 oder .js) Dadurch wird es viel schwerer, die ursprüngliche SWF-Datei im Browsercache zu finden. Der Hauptvorteil der Nutzung dieses Tools liegt darin, dass die Nutzung von SWF-Rippern (Grabbern) verhindert wird, denn diese werden die ursprüngliche SWF-Datei nicht finden.

Zum Anfang

Das Erstellen von verschlüsselten Loadern

Zunächst einmal ist es wichtig, dass die Einstellungen für den erstellten Loadern den Einstellungen der ursprünglichen SWF-Datei, die Sie laden möchten, entsprechen. Sie können beginnen, indem Sie auf "Flash-Film laden..." klicken und die ursprüngliche SWF-Datei auswählen, damit das "verschlüsselte Loader erstellen"-Tool die Einstellungen extrahieren kann.

Danach können Sie optional eine Kopie der Originaldatei mit einer anderen Dateinamenserweiterung (z.B. .mp3 anstatt .swf) generieren. Um das zu tun, setzen Sie ein Häkchen bei "Kopie des Flash-Films laden", geben Sie den Dateinamen ein und wählen Sie dann eine Dateinamenserweiterung aus der Drop-Down-Liste, oder geben Sie selbst eine ein. Es wird strengstens empfohlen, die Dateinamenserweiterung zu ändern.

Im nächsten Schritt stellen Sie bitte sicher, dass das URL-Feld genau dem entspricht, was der Loader laden soll. Es könnte bloß der Dateiname sein, wenn die Originaldatei und der Loader im selben Ordner sein werden, oder die volle URL (Dateipfad) zur Originaldatei, die geladen werden soll.

Encrypted Load Creator

Schließlich können Sie noch einige Änderungen der Loadereinstellungen vornehmen. Die folgende Tabelle erklärt jede Option:

Version Die Version des SWF-Dateiformats.
Dimensionen Die Breite und Größe (in Pixeln) des Flash-Films.
Framerate Die Anzahl der Bilder pro Sekunde, diese sollte immer der Originaldatei entsprechen.
Flash-Film komprimieren Ab Version 6 und neuer können SWF-Dateien komprimiert werden.
ActionScript 3 ActionScript 3 nutzen, um den Loader zu erstellen. Sollte der geladenen SWF-Datei entsprechen.
Netzwerkzugriff erlauben Sollte der geladenen SWF-Datei entsprechen.

Zum Anfang

Stack Trace Deobfuscator

Dieses Tool hilft Ihnen, Fehlermeldungen von AS3-basierten, verschleierten SWF-Dateien zu übersetzen, wenn sie im Stand-Alone-Player ausgeführt werden. Dieses Tool ist beim Troubleshooting sehr nützlich.

Es gibt eine XML-Zuweisungsdatei, die für jede geschützte Datei generiert wird, wenn Zuweisungstabelle generieren eingeschaltet ist. Die Zuweisungstabelle wird mittels des Musters protectedFileName_map.xml generiert und im selben Pfad wie die geschützte Datei gespeichert. Um dieses Tool zu nutzen, klicken Sie auf "Durchsuchen" und wählen Sie die Zuweisungstabelle für die Datei, die den Fehler verursacht hat. Fügen Sie dann die Fehlermeldung des Flash-Players in das Textfeld ein und klicken Sie auf "Trace". Das wird die Verschleierung aufheben und die ursprünglichen Namen der Identifier in der Fehlermeldung anzeigen.

Zum Anfang

Troubleshooting

Nach dem Schutz Ihrer SWF-Dateien empfehlen wir es Ihnen, sie zu testen. Wenn die geschützten Dateien nicht richtig funktionieren, müssen meist eine oder mehrere der Schutzoptionen von secureSWF feiner eingestellt werden. Bitte folgenden Sie diesen einfachen Schritten, um herauszufinden, was schiefgegangen ist.

  1. Entfernen Sie alle Dateien und fangen Sie neu an.

  2. 1.Nach dem erneuten Hinzufügen Ihrer Dateien sollten Sie das Schutzpreset auf "Test" setzen. Damit werden alle Verarbeitungsoptionen abgeschaltet. Verarbeiten Sie die Dateien und testen Sie sie. Wenn die generierten Dateien immer noch nicht funktionieren, kontaktieren Sie uns bitte. Sie haben wahrscheinlich einen schwerwiegenden Bug in secureSWF gefunden, über den wir mehr wissen wollen, damit wir ihn so schnell wie möglich beheben können.

  3. Schalten Sie die Umbenennung von Identifiern ein und verarbeiten Sie die Dateien erneut. Falls sie nicht funktionieren, gehen Sie bitte zur Troubleshooting für das Umbenennen von Identifiern-Sektion. Wenn Sie das Problem behoben haben, gehen Sie zum nächsten Schritt weiter

  4. Schalten Sie Kontrollstruktur-Verschleierung ein und stellen Sie sie auf 100%ige Intensität. Verarbeiten Sie die Dateien. Wenn alles klappt, funktionieren die wichtigsten Features bereits. Bitte fahren Sie mit Schritt 5 fort. Wenn die Dateien nach Einschalten dieser Option nicht funktionieren, können Sie folgendes tun:

    • Für ActionScript 1 und 2-basierte Projekte lassen Sie diese Option ausgeschaltet. Versuchen Sie stattdessen, Statement-Level-Randomisierung und Dynamic Code Wrapping einzuschalten. Sie sind ebenso effektiv wie die Kontrollstruktur-Verschleierung.

    • Für ActionScript 3: Der Flash Player (Debugging-Modus) sollte einen Verifizierungsfehler wie "Stapeltiefe ist nicht ausgeglichen. x!=y" oder "TypeA und TypeB können nicht angeglichen werden" anzeigen, zusammen mit einem Call Stack Trace. Bitte senden Sie uns diesen Fehler zusammen mit dem Code der Funktion, in welcher der Fehler aufgetreten ist. Wenn Sie den Code dieser Funktion nicht weitergeben können, reicht eine Beschreibung der Kontrollstruktur. Wir werden dieses Problem wahrscheinlich sofort beheben und Ihnen ein Update senden. Wenn Sie auf das Update nicht warten können, nutzen Sie einfach vorübergehend nur Statement-Level-Randomisierung und Dynamic Code Wrapping.

  5. Schalten Sie die anderen Optionen nacheinander ein, bis Sie die funktionsunfähige Datei erhalten. Lassen Sie uns wissen, welche Option die Applikation funktionsunfähig gemacht hat.
Zum Anfang

Troubleshooting für die Umbenennung von Identifiern

Obwohl secureSWF versucht, automatisch Identifer zu umgehen, die bei der Umbenennung Probleme verursachen könnten, können einige Identifier immer noch Probleme verursachen und erfordern es, dass Sie sie manuell deselektieren.

Zunächst setzen Sie bitte den Identifier-Umbenennungslevel auf "Sicher", und vergewissern Sie sich dann, dass "Warnungen automatisch beachten" und "Zuweisungstabelle generieren" eingeschaltet sind. Verarbeiten Sie die Dateien. Wenn die geschützten Dateien weiterhin nicht funktionieren, folgen Sie bitte diesen Schritten:

  • ActionScript 1 und 2:

    Sie müssen verschiedene Einstellungen mehrmals ausprobieren, um herauszufinden, welcher Identifier das Problem verursacht. Sie müssen dies nur einmal für jedes Projekt machen, da Sie die Einstellungen speichern und später wieder laden können, wenn Sie diese erneut brauchen.

    1. Wenn Sie mehrere SWF/SWC-Dateien haben: Entfernen Sie diese und verarbeiten Sie jede einzeln.

    2. Klicken Sie in der Registerkarte "Umbenennung von Identifiern" mit einem Rechtsklick auf die SWF-Datei im "Alle Identifier"-Baum und dann auf "Alle deselektieren". Damit werden alle Identifier in der Datei deselektiert.

    3. Selektieren Sie jetzt Identifier gruppenweise; direkt unter der SWF-Datei finden Sie normalerweise den "Zeitleiste"-Knoten (manchmal ein Symbol, Paket oder eine Klasse). Klicken Sie mit rechts auf den ersten Knoten unter der SWF-Datei und dann auf "Ursprungszustand wiederherstellen" (nicht "Alles auswählen"). Verarbeiten Sie die Dateien und testen Sie sie. Wenn Sie funktioniert, gehen Sie weiter zum nächsten Knoten und wiederholen Sie den Vorgang. Wenn es nicht funktioniert, deselektieren Sie den Knoten, überspringen sie ihn und machen Sie mit dem nächsten Knoten weiter.

    4. Jetzt sollten Sie eine funktionierende, geschützte Datei haben, deren Identifier teilweise umbenannt wurden. Sie können jetzt weitere Identifier umbenennen, und die geschützte Datei nach jeder Änderung testen.

  • ActionScript 3:

    Glücklicherweise zeigt der Flash-Player (Debugging-Modus) Verifizierungsfehler in ActionScript 3 an, wenn es ein Problem mit der Identifier-Umbenennung gibt. Einige Fehlermeldungen werden direkt zeigen, welche Identifier deselektiert werden müssen, aber bei anderen müssen Sie eine weitergehende Analyse durchführen.

    Wenn es keine Fehlermeldung gibt, wird das Problem wahrscheinlich von einem Frame-Label verursacht. Der einfachste Weg, alle Frame-Labels zu deselektieren, ist, auf den "Erweitert"-Button direkt unter dem Identifier-Baum zu klicken, ein Häkchen bei "Frame-Label" zu setzen, "*" im Muster-Textfeld einzugeben und dann auf "Übernehmen" zu klicken. Verarbeiten Sie die Datei und testen Sie diese. Wenn das Problem immer noch nicht gelöst ist, dann deselektieren Sie alle Klassennamen im Default-Paket, was das Problem lösen sollte

    Fehlermeldungen wie "Klasse $4 wurde nicht gefunden" bedeuten meist, dass die Klasse, deren neuer Name nun "$4" ist, nicht korrekt bei ihrer Definition umbenannt wurde. Um den ursprünglichen Namen der Klasse zu finden, können Sie den Stack Trace Deobfuscator verwenden. Deselektieren Sie dann den Identifier. Manchmal erscheint der ursprüngliche Identifiername in der Fehlermeldungen, wie etwa "Variable MyVar ist nicht definiert". In diesen Fällen sollten Sie einfach "MyVar" deselektieren

    Andere Fehlermeldungen wie " Kein Zugriff auf eine Eigenschaft oder Methode einer Null-Objektreferenz“ oder "Ein Begriff ist nicht definiert und hat keine Eigenschaften" benötigen eine tiefergehende Analyse. Um herauszufinden, was in diesen Fällen schiefgegangen ist, sollten Sie erst den Call Stack Trace entschleiern, indem Sie den Stack Trace Deobfuscator. nutzen. Folgen Sie dann diesen Schritten:

    1. Sehen Sie nach dem Code der obersten Call Stack Trace-Funktion und erstellen Sie eine Liste der Identifier, auf die diese Funktion zugreift. Wenn diese Funktion eine Flash/Flex API-Funktion ist, fahren Sie mit Schritt 2 fort. Deselektieren Sie jeden Identifier einzeln und testen Sie die Datei, bis der Fehler verschwindet. Wenn die Fehlermeldung verschwindet, ist der soeben von Ihnen deselektierte Identifier derjenige, der das Problem verursacht.

    2. Für jeden Funktionsaufruf im Call Stack Trace sollten Sie die Identifier, die als Parameter weitergegeben werden, deselektieren. Deselektieren Sie sie einzeln und testen sie die Datei nach jeder Änderung, um herauszufinden, welcher Identifier das Problem verursacht. Damit sollte das Problem behoben werden.

Zum Anfang

Command-line Interface

secureSWF besitzt ein Befehlszeilen-Interface, das für die Stapelverarbeitung und Build-Prozess-Integration genutzt werden kann. Die Nutzung des CLI unterscheidet sich auf jeder Plattform:

Windows

Sie können das Befehlszeilen-Interface in zwei Formen nutzen:

ssCLI.exe Project_file Output_folder [override_options]

Oder

ssCLI.exe SWF_file Output_folder [options]

Die Optionen überschreiben die Projekteinstellungen und Ausgangseinstellungen von secureSWF wie folgt:

-slr:[on/off] Überschreibt Statement-Level-Randomisierung
-controlFlow:[0-100] Überschreibt Kontrollstruktur-Verschleierung
-wrap:[0-3] Überschreibt Dynamic Code Wrapping
-optimize:[on/off] Überschreibt Optimierung
-rename:[on/off] Überschreibt Umbenennung von Identifiern
-generateMap:[on/off] Schreibt die Zuweisungstabelle für die Umbenennungen.
-safe Erzwingt sichere Umbenennung
-ignoreWarnings Ignoriert Warnungen nach Verarbeitung
-domains:domain1,domain2 Eine mit Kommata getrennte Liste von Domains, auf die die Dateien gelockt werden sollen.

Zum Beispiel:

ssCLI.exe myProject.sspj c:\output\ -slr:off -controlFlow:50 -wrap:3

Lädt die SWF-Dateien und Einstellungen für die Projektdatei, schaltet Statement-Level-Randomisierung ab, setzt Kontrollstrukturverschleierung auf 50%, setzt Dynamic Code Wrapping auf Maximum, und speichert die geschützten Dateien im Ordner c:\output. Sie können für jede Option auch nur den jeweiligen ersten Buchstaben verwenden (außer -safe).

Zum Anfang

OS X

Sie können das Befehlszeilen-Interface in zwei Formen nutzen:

ssCLI Project_file Output_folder [override_options]

Oder

ssCLI SWF_file Output_folder [options]

Die Optionen überschreiben die Projekteinstellungen und Ausgangseinstellungen von secureSWF wie folgt:

-slr:[on/off] Überschreibt Statement-Level-Randomisierung
-controlFlow:[0-100] Überschreibt Kontrollstruktur-Verschleierung
-wrap:[0-3] Überschreibt Dynamic Code Wrapping
-optimize:[on/off] Überschreibt Optimierung
-rename:[on/off] Überschreibt Umbenennung von Identifiern
-generateMap:[on/off] Schreibt die Zuweisungstabelle für die Umbenennungen.
-safe Erzwingt sichere Umbenennung
-ignoreWarnings Ignoriert Warnungen nach Verarbeitung
-domains:domain1,domain2 Eine mit Kommata getrennte Liste von Domains, auf die die Dateien gelockt werden sollen.

Zum Beispiel:

ssCLI myProject.sspj output/ -slr:off -controlFlow:50 -wrap:3

Lädt die SWF-Dateien und Einstellungen für die Projektdatei, schaltet Statement-Level-Randomisierung ab, setzt Kontrollstrukturverschleierung auf 50%, setzt Dynamic Code Wrapping auf Maximum, und speichert die geschützten Dateien im Ordner output. Sie können für jede Option auch nur den jeweiligen ersten Buchstaben verwenden (außer -safe).

ssCLI myFile.swf output/ -s:off -c:50 -w:3 -g:on

Zum Anfang

Linux

You can use the command-line interface in two forms:

secureSWF Project_file Output_folder [override_options]

Or

secureSWF SWF_file Output_folder [options]

Sie können das Befehlszeilen-Interface in zwei Formen nutzen:

-slr:[on/off] Überschreibt Statement-Level-Randomisierung
-controlFlow:[0-100] Überschreibt Kontrollstruktur-Verschleierung
-wrap:[0-3] Überschreibt Dynamic Code Wrapping
-optimize:[on/off] Überschreibt Optimierung
-rename:[on/off] Überschreibt Umbenennung von Identifiern
-generateMap:[on/off] Schreibt die Zuweisungstabelle für die Umbenennungen.
-safe Erzwingt sichere Umbenennung
-ignoreWarnings Ignoriert Warnungen nach Verarbeitung
-domains:domain1,domain2 Eine mit Kommata getrennte Liste von Domains, auf die die Dateien gelockt werden sollen.

Zum Beispiel:

ssCLI myProject.sspj output/ -slr:off -controlFlow:50 -wrap:3

Lädt die SWF-Dateien und Einstellungen für die Projektdatei, schaltet Statement-Level-Randomisierung ab, setzt Kontrollstrukturverschleierung auf 50%, setzt Dynamic Code Wrapping auf Maximum, und speichert die geschützten Dateien im Ordner output. Sie können für jede Option auch nur den jeweiligen ersten Buchstaben verwenden (außer -safe).

ssCLI myFile.swf output/ -s:off -c:50 -w:3 -g:on

Zum Anfang