2008-08-07 11 views
21

J'ai écrit (la plupart de) une application dans Flex et je suis préoccupé par la protection du code source. J'ai lancé une démo de Trillix swf decompiler et ouvert le fichier swf qui a été installé dans mon répertoire Program Files. J'ai vu que tous les paquets ActionScript que j'avais écrits étaient là. Je ne suis pas trop concerné par les paquets, même s'il y a une quantité importante de code, car il semble encore assez inutilisable sans les fichiers mxml. Je pense qu'ils sont convertis en actionscript, ou au moins j'espère. Cependant, j'aimerais toujours explorer l'obscurcissement.Obfuscation Flex/Air

Est-ce que quelqu'un a de l'expérience avec les obfuscateurs Flash/Actionscript 3/Flex? Pouvez-vous recommander un bon produit?

Répondre

13

Voici ce que je ferais.

  • Compilez votre application dans un fichier SWF. Chiffrez ensuite le fichier SWF à l'aide d'AES.

  • Faire une application "wrapper" qui charge le fichier SWF crypté en utilisant ByteArray URLLoader

  • Utilisez la bibliothèque as3crypto pour décrypter le fichier SWF lors de l'exécution. Une fois déchiffré, utilisez Loader.loadBytes pour charger le swf déchiffré dans l'application wrapper.

Cela rendra votre code beaucoup plus difficile à obtenir. Pas impossible, mais plus difficile.

Pour les applications AIR, vous pouvez laisser le fichier SWF chiffré lors de la livraison de l'application à l'utilisateur final. Vous pouvez ensuite fournir une clé d'enregistrement contenant la clé utilisée pour déchiffrer le fichier SWF.

En outre, voici un lien vers un obfuscator AS3. Je ne suis pas sûr à quel point cela fonctionne bien. http://www.ambiera.com/irrfuscator/index.html

20

La procédure proposée par maclema ne sera pas vraiment arrêter tout attaquant d'obtenir la source - l'application « wrapper » devra être non crypté afin que l'attaquant sera en mesure de savoir que vous utilisez AES (ou tout autre algorithme) et il obtiendra la clé de décryptage d'une manière similaire (car il doit être en clair quelque part). Une fois qu'il a cela, il sera capable de déchiffrer votre fichier SWF facilement. La seule solution fiable (bien ...) est une sorte d'obfuscator - nous utilisons Amayeta qui fonctionne pour Flex dans la dernière version - s'il vous plaît voir http://www.amayeta.com/software/swfencrypt/.

+1

Je pense que c'est la réponse qui devrait être acceptée. –

3

Eh bien, à mon avis, la plus facile et la plus sûre solution est un mélange de maclema et Borek réponse:

Code Dissimuler peut être un grand headach si vous n'avez pas inclus dans votre processus dès le départ et si votre L'application est assez importante: il est probable que l'obfuscation rende votre application corrompue si vous utilisiez des paquets distants (et ne les déclariez pas à l'obfuscator) si vous utilisiez de nombreuses variables non typées dans les objets ou les classes dynamiques.

si vous faites la solution de maclema sur votre grande application et utilisez l'obfuscation sur votre wrapper (qui est une petite application susceptible d'être très facile à obscurcir) votre code sera le plus sûr et le hasle les leas t. Seul un pirate très en colère prendrait le temps de désosser l'obfuscation pour ensuite décrypter le paquet ....Eh bien, si quelqu'un veut votre code d'application soo mauvaise qu'il est soit CIA en savoir ou vous êtes déjà très riche (ou les deux)

vous remercie tous pour vos réponses

0

J'ai récemment sorti un jeu iOS et Android en utilisant Flash. J'ai regardé autour d'Internet pour un bon programme libre pour protéger le code source dans mon SWF et n'a rien pu trouver alors j'en ai écrit un. Il est encore en développement et c'est "à utiliser à vos risques et périls" mais ça a fonctionné pour moi.

Il est publié sur github. Vérifiez-le et laissez-moi savoir ce que vous pensez.

https://github.com/Teesquared/flasturbate

J'ai téléchargé un fichier binaire de fenêtres mais je vous recommande de suivre les instructions pour construire vous-même si vous voulez essayer.

Cet obfuscateur fonctionne directement sur le fichier SWF. Il ne renomme actuellement que les symboles mais il est construit sur un framework qui pourrait supporter la modification des bytecodes dans le futur.