Técnicas para proteger los SWF
Me gustaría abrir este post para que hablásemos de técnicas para proteger el contenido swf.
He estado buscando algo de información y hay unos cuantos ofuscadores de actionscript, pero aparte de esta forma de protección contra los que quieren abrir el swf para verlo por dentro, está el otro lado de la protección, que es que no te hagan framing de un swf y/o que no te copien un swf y lo cuelguen en otro site.
Para esto último yo uso el siguiente script que no es que sea nada del otro mundo, pero funciona en una primera instancia.
<code>
Stage.showMenu=false; // Deshabilita el menú de flash
if (_root._url.indexOf("http://misite")==-1&&_root._url.indexOf("http://www.misite")==-1) {
unloadMovie(_root);
gotoAndStop(1);
}
</code>
En definitiba si el _root._url no es tu dirección web hace unload de la pelicula principal. Con lo que se vería un swf en blanco cuando copian tu swf en otro sitio. Si además compilas el swf con compresión se hace más el ver que estás usando ese código, aunque no es imposible de quitar o cambian se hace mas complejo.
Ah, bueno de quere usar el swf además en local habría que añadir en el IF un _root._url.indexOf("file://")==-1
De todas formas con file:// sólo lo uso cuando estoy haciendo pruebas en plan debug... para publicar lo quito así cuando alguien captura el SWF de la cache por ejemplo y lo ve con el player de flash (el standalone) no le tira.
theMartix
Microbians, yo para mi nuevo proyecto, habia pensado de proteger el swf, pero poner algo del actionscript o aquello que pueda interesar, como un contenido para bajarse.
Seguro que hay alguna manera que funcione bien lo de proteger el swf, no me acuerdo bien pero creo que con el optimaze, o algun programa de estos, podias cerrar el swf para que no te lo abrieran.
ozke
Un swf siempre se podrá abrir... como un exe, un lokesea.
Lo q si se puede hacer es hacerlo más complicado, la propuesta d gabriel nostamal.
Alter Ebro
tenia un par de enlaces sobre el tema:
-actionScriptObfuscator
http://www.genable.com/aso/
- noticia de kenike.org parecido a lo que hace microbians
http://www.kenike.org/archivos/000068.html
marcsallent
otra forma de "esconder" el código es hacerlo complicado para que al menos les cueste encontrar la parte que necesitan.
ejemplo de preloader que aplica un "fadeout" sencillo a un clip cuando acaba la precarga:
<code>_root.onEnterFrame = function() {_root.getBytesLoaded() == _root.getBytesTotal() ? [delete (_root.onEnterFrame), gotoAndPlay("in"),tapa.onEnterFrame=function () {(this._alpha -= 10)<=0 ? [_root.gotoAndPlay("rein"), delete (this.onEnterFrame)] : segundosIn-- }] : [loadT.text=(100*_root.getBytesLoaded()/_root.getBytesTotal())+"%"]};</code>
pues nah, que alguien busque por ahí el cacho de código que necesite xDD
marc
Usuario desconocido
Aká se pueden postear estas cosas:
http://www.flashkit.com/board/forumdisplay.php?forumid=23
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&group=macromedia.open-swf
microbians Staff
En esos foros me da que hablan mas de cómo compilar y tratar wl código SWF a pelo... yo voy más por técnicas sencillas que permitan complicar el que puedan reutilizar el código y/o un web en flash.
theMartix
ya tienes razón Marc... no se entiende nada!!
orange
He caido en este hilo medio de rebote, ya sabeis que no se mucho de flash pero se me ocurre que otra forma de "entorpecer" la utilización de swf fuera de contexto podria ser hacer una llamada a una pagina php que le devolviese un valor.
Por ejemplo al inicio del swf hacer una llamada a estasencasita.php (ruta relativa, no global), y que esta le devuelva el ok.
Si el tio trata de ejecutarlo fuera de su sitio nunca encontrará la página, además eso nos asegura que, de crackearlo, siempre lo tendría que ejecutar en un servidor, y no se lo podría pasar a 500 amigos por mail.
Y no sólo tendría que poner una pagina igual, sino que tendría que averiguar qué variables le pasa para que funcione.
En cualquier caso si la gente tiene acceso al código fuente del swf (y creo que eso se puede hacer) cualquier cosa de estas que pongamos se las podrán ventilar o simular.
ozke
Es desproporcionadamente sencillo usar decompiler y mirar el código.
Ergo no sirve. Pero buen intento ;)
Josh
otra solución es que el html en src= llame a un php. Este script comprueba el referrer de la llamada y si es de el dominio nuestro manda el swf. Tb se puede hacer con directivas de apache.
orange
Ya lo que pasa es que si te pueden ver el codigo todo lo que pongas será "simulable" o crackeable ¿se puede también cambiar el código con ese programita?.
La cuestión es que utilizando una medida de servidor al menos te aseguras que no lo distribuyan a diestro y siniestro.
Quizá lo más efectivo sería combinar todas las ideas que se van poniendo.
mediopixel
Una solución para que no te pillen el .swf es generarlo en tiempo real con php, codificando el swf en base64_decode. y haciendo una referencia al propio php en lugar de poner el nombre de archivo en el object, más o menos así:
<PARAM NAME=movie VALUE=<?php echo $_SERVER["PHP_SELF"]; ?>?swf=1>
Esta solución no genera ningún swf en los temporales, de donde se puede pillar, en su lugar se encontraran con un php que contiene el código binario del swf.
No sé si me he explicado bien.
theMartix
Pero para todo esto necesitas un server con php, y si no se tiene como es mi caso? es una pua... aunque a mi no me han copiado nunca y no creo que lo hagan :)
mediopixel
no tiene porqué ser php, se puede hacer con asp,etc.
De todas maneras esto no es la panacea, sólo sirve para poner un poco más difícil el asunto, porque el archivo sigue estando ahí solo que en otra extensión.