Ich schreibe eine Flash-Anwendung und habe Angst, dass sie dekompiliert wird. Um diese Chance zu minimieren, möchte ich die Datei verschleiern.
Ich habe von secureSWF ( Ссылка ) gehört, und sie listen einige "Benutzerkommentare" auf. Diese sind jedoch so optimistisch, dass sie schwer zu trauen sind. Es gibt keinen einzigen pessimistischen Kommentar (nicht einmal über zB die Benutzeroberfläche oder den Support), also sagt mir etwas, dass sie nicht alle posten könnten. Meiner Erfahrung nach haben sogar die besten Firmen hin und wieder eine Art Kritiker.
Also, irgendwelche Reverse-Ingenieure hier könnten mir sagen, wie erfahren Sie in diesem Job sind - und ob Sie es geschafft haben, eine secureSWF-verschleierte Datei zurückzuentwickeln? Wenn ja, wie lange haben Sie ungefähr gebraucht? Würden Sie diese Software weiterempfehlen?
Vielen Dank im Voraus.
HAFTUNGSAUSSCHLUSS: Ich arbeite für Kindisoft.
secureSWF ist der beste ActionScript-Obfuscator auf dem Markt. Ich glaube, daran besteht absolut kein Zweifel: Ссылка
Code-Obfuscatoren sollten es Reverse-Ingenieuren unmöglich machen, ein automatisiertes Werkzeug zu verwenden, das lesbaren Quellcode (d. h. einen Decompiler) abrufen kann. Und dabei ist secureSWF sehr erfolgreich. Da die Automatisierung des Prozesses nicht mehr möglich ist, hängt der Zeit- und Arbeitsaufwand für das Reverse-Engineering der verschleierten Anwendung von deren Größe ab. Je größer die Anwendung ist, desto komplexer und zeitraubender wird das Reverse-Engineering. Den Code von Grund auf neu zu schreiben ist normalerweise einfacher.
Verschleierung ist keine Verschlüsselung. Es sollte ein einseitiger Prozess sein. Wenn Sie Bezeichner umbenennen, sind die ursprünglichen Namen nicht mehr vorhanden. Der einzige Weg, sie zurückzubekommen, ist Raten. Dasselbe gilt für die Kontrollflussverschleierung. Wenn Sie die Anweisung ändern und ändern, wie der Code in Bytecode ausgeführt wird, gelten nicht dieselben Regeln wie in ActionScript. Berücksichtigen Sie Folgendes:
%Vor%Stellen Sie sich nun vor, dass dies auf Ihren gesamten Code angewendet wird. Jedes Mal auf andere Weise. Ich würde weiter gehen, als zu behaupten, dass SWF-Dateien im Reverse-Engineering so hart werden wie nativer Code. Ich sage, es wird noch schwieriger.
Aber ist das möglich? Natürlich ist es das. Wenn Sie etwas so Wichtiges haben, auf das sich Angreifer in all diesen Schwierigkeiten einlassen, dann sollte es in einer möglicherweise feindseligen Umgebung (dem Client) definitiv nicht ausgeführt werden. Obwohl es hilfreich ist, sollte Verschleierung nicht hauptsächlich als Sicherheitsmaßnahme gedacht werden. Weitere Informationen finden Sie hier: Ссылка
Andere Alternativen umfassen die Beibehaltung des sensiblen Codes auf dem Server und die Verschlüsselung. Serverseitige Codierung ist nicht immer möglich. In vielen Fällen müssen Sie Ihren Code wirklich auf dem Client ausführen. Die Verschlüsselung ist noch schlimmer, die Entschlüsselung muss auf dem Client erfolgen und Sie müssen den Entschlüsselungscode und den Schlüssel an den Client senden, ohne dass der Angreifer den Code selbst entschlüsseln kann.
Ich hoffe, ich habe genügend technische Inhalte zur Verfügung gestellt, um meine Ansichten zu unterstützen. Jetzt zurück zu schamlosem Marketing :). Laden Sie die Demoversion herunter und testen Sie sie selbst. Es ist nicht zeitlich begrenzt und voll funktionsfähig, außer für ein Wasserzeichen, das wir auf verarbeiteten Dateien hinterlassen. Da wir nach Leuten in Foren und stackoverflow.com gehen, um zu helfen, übertrifft unser technischer Support-Service definitiv die Erwartungen;)
Weitere Informationen finden Sie hier: Ссылка
Regel 1:
Jeder mit Intelligenz und Entschlossenheit erhält immer Ihren Code / Schlüssel / Quelle / Dateien / Daten
Alles, was Sie tun, erhöht einfach den potenziellen Zeitaufwand, der für einen Kompromiss erforderlich ist
Mit oder ohne SecureSWF, werden sich die Leute die Mühe machen?
Ein kurzer Google-Vorschlag besagt, dass nicht viele Versuche unternommen wurden, SWF-Dateien zu dekompilieren, die mit secureSWF erstellt wurden, aber sie müssen immer noch die Spezifikation des kompilierten Bytecodes erfüllen ... also ist es nur Verschleierung. Das Fehlen von Tests schlägt vor:
Ich denke, ersteres ist wahrscheinlicher. Wenn Sie gesagt haben, was die Flash-App macht, könnten diese Punkte spezifischer sein.
Ich würde nach Datenquellen suchen, die sich darauf beziehen, wie lange nach der Veröffentlichung diese Dinge umgekehrt wurden ( eher ) als die Sicherheit des Systems selbst (was irrelevant ist).
Stellen Sie auch sicher, dass es eine gute Strategie ist, Ihre Quelle zu sichern (anstatt mit der Community zu kooperieren), wenn Sie zu einem bestimmten Zeitpunkt auf Ihre Logik zugreifen können.
Aus geschäftlicher Sicht sollte Ihre strategische Position nicht dafür sorgen, dass Ihre Logik durcheinander gebracht wird ... da dies zwecklos ist. Sie können so proprietär sein, wie Sie wollen ... aber die Leute werden sich darum kümmern (fragen Sie einfach die Spieleindustrie). Und schwerfällige Sicherheit verursacht Gegenreaktion (siehe DRM).
Wenn Sie davon überzeugt sind, dass Ihre Anwendung so toll ist , dass die Leute sich bemühen, sie umzukehren, suchen Sie nach einem anderen Wertangebot.
Flash ist eines dieser Dinge, wie JavaScript, wo es nur so viel gibt, was du tun kannst und ist es wirklich wichtig? Was nützt die App-Logik ohne die anderen Links in der Kette?
Wie auch immer, achten Sie auf die erforderliche Anstrengung, um die Kodierung eher als die wahrgenommene Stärke der Clients der Software umzukehren.
Wie auch immer, viel Glück!
Ich habe keine umfassende Erfahrung mit Obfuscators, aber vor einigen Monaten wurde ich gebeten, ein paar von ihnen für ein bestimmtes Projekt auszuprobieren (es war eigentlich ein einfacheres Multiplayer-Spiel). Ich habe SecureSWf und Amayeta SWFEncript ausprobiert (beide Testversionen, die voll funktionsfähig waren, wenn ich mich recht erinnere).
Beide hatten einige Probleme mit den "fortgeschritteneren" Funktionen. Wenn ich nur die Bezeichner umbenennen würde, würden die Dinge reibungslos funktionieren. Aber selbst mit den Standardeinstellungen (ein Minimum an Kontrollflussverschleierung) erzeugte einer der Verschleierer einen illegalen Bytecode, d. H. Er würde vom Verifizierer des Spielers zurückgewiesen. Dies erzeugt eine Ausnahme und das ist es auch. Ich kann mich wirklich nicht erinnern, welches, aber es scheiterte, sobald Sie das swf laufen.
Ich habe nicht viel mehr getestet, aber es hat mir gezeigt, dass dies auch etwas ist, was Sie berücksichtigen müssen. Bei der Verwendung dieser Tools fallen zusätzliche Kosten an . Es könnte akzeptabel sein oder nicht für Ihre Zwecke, aber Sie sollten es erklären. Sobald du swf änderst und verdrehst, ist es nicht das selbe swf, das du getestet und getestet hast . So, jetzt haben Sie zweimal als Arbeitstests, denn es gibt eine Chance, dass der Obfuscator Fehler eingeführt hat. Der, den ich sah, war ziemlich offensichtlich und blies den Spieler sofort, aber es könnte subtilere, härtere geben. Und wenn Sie einen Fehler haben, der nur in Ihrer "sicheren" Version angezeigt wird (oder schlimmer, es sieht aus, als ob es nur in Ihrer sicheren Version passiert, aber Sie sind nicht positiv), wird das Debuggen keinen Spaß machen.
>Natürlich ist das keine richtige Rezension, nur meine begrenzte Erfahrung. Die meisten Obfuscatoren haben kostenlose Versuche, so dass du sie selbst ausprobieren kannst. Und ich sollte auch sagen, dass der dekompilierte und disassemblierte Code gut, wirklich verschleiert wurde und daraus einen Sinn ergeben würde.
Aber ich dachte, ich würde eine andere Perspektive hinzufügen, die nicht oft erwähnt wird.
Sehen Sie sich Open-Source-Compiler an, wie SWFMill und Haxe Ссылка , die in ihrem letzten swf einen unterschiedlichen Byte-Code erzeugt haben, von dem viele abstürzen können beliebte Decompiler. Es ist offensichtlich, dass der Code genau wie das gewöhnliche Adobe kompilierte SWF erhalten werden kann, aber viele Decompiler werden einfach nicht damit arbeiten. Wenn Sie also den "Aufwand" erhöhen möchten, würde ich Ihnen empfehlen, sich diese Lösung anzusehen und vielleicht etwas schaffen, das alles vermischt.
Tags und Links flash actionscript-3 reverse-engineering obfuscation