Deobbing flash

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.
  1. Flasm
  2. UnSWFEncrypt
  3. 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

9 comentarios en “Deobbing flash”

  1. 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

  2. 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

      1. 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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *