This course will become read-only in the near future. Tell us at community.p2pu.org if that is a problem.

Hackeando nuestras aplicaciones con Wordpad


Hackeando nuestras aplicaciones con Wordpad

Primero me gustaría decir que en ningún momento considero esto un Manual para Hackear Aplicaciones desarrolladas con Macromedia Director, es más bien un pequeño tutorial para proteger nuestras aplicaciones, eso si al final intentaré poner un ejemplo real de su uso.

Para los usuarios de Director uno de los “paneles” más importantes y que más utilidad tiene es la ventana de Message, desde ella podemos lanzar comandos, funciones y testear todo tipo de variables, y muchas más cosas que ya veremos. Es decir tenemos  acceso a toda la aplicación. La manejamos a nuestro antojo, para depurar la aplicación es perfecta e imprescindible.

Empezamos a trabajar:

Tenemos nuestra aplicación cerrada, hemos generado un archivo ejecutable .exe, y vemos que algo falla, y nos interesaría comprobarlo en tiempo de ejecución. Muy  sencillo, con Wordpad creamos un archivo llamado "lingo.ini" en la misma raíz que el archivo .exe, y ponemos lo siguiente:

on startup

       the debugPlaybackEnabled = 1

end startup


Ponemos en ejecución la aplicación y mágicamente aparece una ventana de message.

 Aún más, en ella escribimos:

the traceLogFile = the moviePath & "Texto de Message.txt" ( nos guarda un log de lo que aparecería en la ventana de message )).

Si le pedimos las globales: "show globals" nos muestra las variables.

Los que alguna vez desarrollaron juegos con Lingo, verán lo cómodo que puede ser el poder modificar los parámetros desde aquí. Ahora me imagino que deben estar pensando las posibilidades que se nos presentan. Es decir, “tenemos el poder”.


Pero claro este es un método que nosotros vamos a usar para nuestro propio beneficio, y no queremos que algún usuario con malas intensiones lo use, así que una vez explicado el truco, vamos a ponerle una llave.

Primero veremos los pasos a seguir:

Al ejecutar nuestro archivo .exe, la primera función que se ejecuta es el startup de nuestro "lingo.ini" y después pasa el control al "prepareMovie" de la aplicación.

En nuestra película de Director introducimos un "prepareMovie"

on prepareMovie me
            netid = getnettext( the moviepath&"llave.txt")

            if netTextResult(netid)="12$%&" then
                       the debugPlaybackEnabled = 1
                    else
                       the debugPlaybackEnabled = 0
            end if
end
 

A ver que hace este código: Simplemente busca un archivo llamado "llave.txt" con el texto "12$%&" y en el caso que exista nos lanzará la ventana de message, y si no existe ese archivo continuará sin mostrarla.

Esto conlleva una ventaja, si colocamos el archivo "llave.txt" correcto, nos podemos ahorrar el "Lingo.ini", pero si algún “usuario malo” que conociera esta técnica lo colocara al ejecutarse el preparemovie se le cerraría, y se quedaría con las ganas.
 

Hay otra manera para controlar la ventana de message (usando una variable global)

Modificamos el lingo.ini

on startup
     global secreta
     secreta = "12$%&"
     the debugPlaybackEnabled = 1
end startup

Y en el “prepareMovie” ponemos:

on prepareMovie me
     global secreta

     if secreta = "12$%&" then
              the debugPlaybackEnabled = 1
           else
              the debugPlaybackEnabled = 0
    end if
end

 

De esta manera cualquiera que no sepa que hemos puesto este código usará el típico:

on startup
      the debugPlaybackEnabled = 1
end startup

Pero se le cerraría la ventana de message.

Si me preguntan cuál de las dos opciones escojo, prefiero la primera que la segunda. No me gusta tener una variable rondando.
 

Fue un placer compartir este pequeño truco para impedir que nos hackeen nuestras propias aplicaciones…

Un salu2

Abel Valdivia Fonticiella

Task Discussion