Este tutorial pretende mostrar cómo desofuscar el código AS de un objeto flash para poder manipularlo y, a continuación, volver a crearlo modificado.
Actualización 15/07/2019, Google ha marcado la web para descargar el archivo de UnSWFEncrypt como insegura por contener descargas de código malicioso. He cambiado el enlace para que apunte a otro sitio de descargas donde se puede conseguir el enlace original. No obstante aconsejo usarlo con suma prudencia.
Para conseguirlo se ha utilizado.
- Flasm
- UnSWFEncrypt
- Notepad++
Introducción
En el mercado existen varias herramientas para descompilar archivos swf, sothink, trillix, etc. Ninguna de ellas, sin embargo, es capaz de extraer correctamente el código Actionscript cuando está ofuscado. De modo que, una vez descompilado, el código AS nos aparecerá ilegible y, por tanto, no manipulable. De hecho ni siquiera se podría generar un .fla válido.
Fuente
En este
foro he encontrado información útil y que desconocía acerca del proceso de ofuscación y desofuscación de AS de los objetos flash. Básicamente el proceso de ofuscación general del código pasa por transformar el nombre de las variables en caracteres no visibles y técnicas de salto de sentencias.
Procedimiento
Se trata pues de encontrar un método para «desencriptar» el flash, desmontarlo para modificar el código AS y volvera montarlo de nuevo.
En
esta web podemos encontrar tres herramientas para desofuscar archivos swf. Después de probar las tres, la única que me ha dado resultado es UnSWFEncrypt.
Pero para poder desencriptar el swf, primero tenemos que descomprimirlo. Para eso utilizaremos una de las funciones de Flasm, con el siguiente comando:
flasm -x archivo_a_descomprimir.swf
Lo que hace es descomprimir el archivo y crear un backup .$wf del mismo.
Una vez descomprimido ya podemos desencriptarlo con UnSWFEncrypt, para ello clicamos dos veces en UnSWFEncryptUNP.exe para lanzar la aplicación.
El proceso es muy sencillo, clicamos en
Restore, seleccionamos el archivo swf que queremos desencriptar y le damos a abrir. Si todo va bien, en pocos segundos tendremos en la ventana principal del programa un log del tipo:
Loaded file: «C\:archivo_descomprimido.swf
Original file size: 1063 K
Now, parsing SWF…
Complete!…
New SFW Size: 830K
Ahora que tenemos el archivo descomprimido, volvemos a utilizar
Flasm para desensamblarlo con el siguiente comando, no hace falta pasarle ningún valor basta con ejecutar:
flasm archivo_desencriptado.swf
Flasm nos generará un archivo con la extensión flm, en este caso archivo_desencriptado.flm.
Dicho archivo .flm puede ser editado (en mi caso he utilizado notepad++) para modificar lo que estimemos oportuno. Una vez editado, lo guardamos y volvemos a tirar de Flasm:
flasm -a archivo_desencriptado.flm
Con esto volvemos a ensamblar el swf con los cambios que hayamos realizado.
Por último, sólo nos queda volver a comprimir el archivo swf con el siguiente comando:
flasm -z archivo_desencriptado.swf
Hola Marcos,
Enhorabuena por tu blog, es verdad que hay una desinformación total en cuanto a desencriptar archivos swf, así que leer esto me ha parecido muy interesante.
He descargado ambos programas: flasm y UnSWFEncrypy, pero el flasm no se ejecuta correctamente, si lo ejecuto se abre una pequeña consola y se cierra automáticamente en décimas de segundo…
¿sabes a que se debe esto?
gracias por tu ayuda y un saludo,
David
Solucionado. he creado un .bat en el Notepad++ y si que ha descomprimido el archivo swf.
saludos
Me alegro, David. Justo ahora iba a responder. :)
Gracias Marco.
No obstante, he seguido tus pasos y la «desencriptación» no se hace correctamente. (supongo que llevará alguna encriptación u ofuscación nueva el swf).
Te explico un poco el tema y te dejo el link de un software que quizá también te interese:
Para extraer, editar y compilar un swf, yo utilizo el programa Rabcsam (tipo hexad) y funciona todo bien, siempre que lo hago con un swf ya desencriptado.
Al extraer el swf, el programa te genera una nueva carpeta con todos los archivos de ese swf .asasm para poder modificar en el Notepad++ y luego compilar.
Pero si lo intento con un swf sin desencriptar, la carpeta generada no extrae los archivos .asasm correctamente para poder modificarlos.
Es decir, que tengo el problema en saber como desencriptar el swf para poder usar luego el Rabcsam.
(el flasm no me genera la carpeta con los archivos para poder editarlos, sólo un pequeño archivo flm de 66k que no sirve)
Si desencripto el swf con el UnSWFEncrypt, también me da error el Rabcasm y no me genera la carpeta con los archivos.
Te dejo el link donde puedes descargar el Rabcasm por si te sigue interesando este tema, y los pasos a seguir:
http://www.woodmann.com/collaborative/tools/index.php/RABCDAsm
Pasos a seguir:
1. Upon download this programs, extract rabcdasm folder and install notepad++
2. Goto your desktop and create a folder
3. open this folder and paste here some .exe from the folder rabcdasm
folder should consist of:
abcexport.exe
abcreplace.exe
rabcasm.exe
rabcdasm.exe
fresh swf files for example: game.swf
extract.bat
compile.bat
how to create .bat files
create a new txt document each
in extract write this
abcexport game.swf
rabcdasm game-0.abc
in compile write this
rabcasm game-v120.v31-0\game-v120.v31-0.main.asasm
In Extract write this
abcreplace game.swf 0 game-0\game-0.main.abc
del /q /f game-0.abc
pause
EDITING
4. after completing requirements above.. double click extract.bat
5. after the CMD screen vanished, there will be a new folder popups
6 Open that folder and edit some on of the *.asasm files
Si tú quieres hacer alguna prueba, te puedo dejar un archivo swf encriptado, y otro ya desencriptado, para que veas el resultado con cada uno.
Un saludo,
David
Muchas gracias por la información, David. ¿Podrías pasarme un enlace del archivo en cuestión?, me gustaría hacer alguna prueba.
Hola Marcos, el programa Rabcdasm es el que usan la mayoría de personas que modifican juegos online. El archivo original es un swf de un juego online. Yo he descargado el swf del juego con el software MOYEA. Si quieres te envío por email el archivo y pruebas tú a desofuscarlo o desencriptarlo. También te mandaría una muestra de como se debería quedar la carpeta de archivos de ese swf una vez desencriptado y descompilado para poder ser modificados, para ver si a ti te quedan igual. dime un email para enviártelo.
Saludos,
David
Estupendo, mándamelo por favor a [yo][@][marcospena.es] sin los corchetes :). Gracias. Lo pruebo y te digo.
un saludo.
A mí también se me cierra el flasm, ¿cómo se arregla?
¿Podrías ser un poco más específico?
Lastima que no eh logrado hacer esto hay una forma de contacto contigo?
Me podrías contactar mandando un correo a yo@ seguido del dominio de este blog. Pero me temo que no te voy a ser de mucha ayuda. Esta entrada tiene diez años ya, y apenas recuerdo nada de la técnica usada.