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