Obteniendo el Código de cualquier Aplicación Silverlight

Como todos sabréis SilverLight vive en la caja de arena del navegador (sandbox) y los desarrolladores no pueden extender esta caja de arena y con esto la gente se queda contenta y no presta atención a la seguridad de su aplicación en Silverlight. El motivo de escribir este post fue por la contestación de un colega que me dijo que estaba desarrollando una aplicación en SilverLight y que era guay porque con la caja de arena tenia la seguridad cubierta y no se la podían crakear y tenia protegido su código.

 

Infeliz!!!!!!!!!!!!!!!!!!!!!!!

Una de las cosas que menos me gustan de Silverlight es lo que voy a comentar en el post, como sacar el código fuente de cualquier aplicación SilverLight  no penséis que hay que saber un montón de hacking, sino que es muy sencillo.

He elegido para hacer las pruebas la aplicación primetable una aplicación que crea horarios para las escuelas

image

La primera opción es manual y hay que seguir los paso siguientes

  • Sacamos el código fuente de la pagina

 

image

  • En el codigo fuente buscamos la palabra XAP, en este caso lo tenemos en la linea
$create(Sys.UI.Silverlight.Control, {"source":"../ClientBin/Ras.Client.xap"}, null, null, $get
  • Como podemos ver en esta línea tenemos la ruta relativa al fichero de Silverlight, la copiamos y la ponemos en nuestro navegador, en nuestro caso http://www.primetimetable.com/ClientBin/Ras.Client.xap, podemos ver que nos pedirá bajar el fichero XAP, lo bajamos y lo guardamos en nuestro PC
  • Como sabéis los ficheros XAP realmente son ficheros ZIP, lo descomprimimos

image

  • Ahora podemos ver todas las dll y ficheros de configuración donde podremos ver la configuración de los servicios WCF, y a través de Reflector podremos ver el código de la aplicación SilverLight y decompilarla.

 

 

 

 

Como habéis podido comprobar es bien sencillo, pero todavía es mas sencillo con la herramienta Silverlight Spy 2

image

Donde podéis ver toda la información y código de la aplicación.

 

Para evitar esto podéis obfuscar como en cualquier aplicación de .Net, algo importante si queréis proteger vuestro código

14 comentarios sobre “Obteniendo el Código de cualquier Aplicación Silverlight”

  1. Yo no llamaría «Hacking» a obtener el código fuente de la aplicación Silverlight.

    El SandBox es seguridad en ejecución, no protección «intelectual» de la aplicación.

    PD: En Flash tienes lo mismo…. y con Ajax más fácil aún.

    PD2: Al igual que en una aplicación Web tradicional, toda la lógica de negocio sensible se realiza en el servidor.

  2. Estoy con Pablo, esto no es hackear una aplicación silverlight. Esto es mirar por la puerta trasera y poco más.
    Pero está claro que tenemos que ser consciente en cada momento con lo que estamos trabajando y sus limitaciones.

    Saludos.

  3. Hola,
    Si yo tampoco creo que sea Hackear (al menos en el sentido clásico de la palabra)… Pero lo interesante del post es la concepción que tenía el colega de Oskar del sandbox de Silverlight.

    Saludos!!! 😉

  4. 100% de acuerdo con Pablo. Esto es una caracteristica de .Net todo. Salvo que ofusques (y a veces ni asi), el codigo, podrias leer el codigo de cualquier aplicacion teniendo acceso a su DLL.

    Como bien dice Pablo, esto, en la Web, se aplica a mas tecnologias. Si pudimos meter la mano en el javascript de otro, indudablemente AJAX no esta a salvo. Ni que decir en que se confie en Flash para hacer streaming de video, cuando puedes tomarlo sin problemas.

    En fin, esto no es hacking, es una caracteristica. De ahi a que no todo el mundo sepa de esto, es otra cosa. Pensemos que aun hay empresas de software que creen que porque compilaron su codigo y se genera un archivo DLL, en .Net, este esta totalmente seguro.

  5. Cuando leí las palabras «sandbox», «silverlight» y «hacking» pensé que ibas a contar algo sobre como saltarse la seguridad de SL en el cliente … !!!

    Saludos

  6. Cierto no es hacking solo queria llamar la atención de la gente para que tuviese cuidado a la hora de hacer aplicaciones silverlight.
    Por cierto si creo que se puede saltarse la seguridad con un poco de trabajo pero nunca lo pondria publico

  7. Hola, no lo considero Hacking, es casi como cuando veo los archivos js de una app web html + ajax. Pensé que te «saltabas» la sandbox, ya me había dado miedo!, jaja
    buen fin de semana!

  8. Hola, no lo considero Hacking, es casi como cuando veo los archivos js de una app web html + ajax. Pensé que te «saltabas» la sandbox, ya me había dado miedo!, jaja
    buen fin de semana!

  9. Estimado amigo, muy bueno el ejemplo pero probe para ver si obtenia el codigo pero parece que si aplicaron el ofuscador los amigos duelños del programa, tengo una consulta, no se si me puedes ayudar indicandome que controles son los que usaron en esta pagina, me interesa mucho el contro riboon, y la grilla que usan que se parace mucho a la de windows, espero me puedas ayudar.

    Saludos

  10. Hola que tal!

    Asi es, es demasiado fácil extraer el código, por eso es que uno debe evitarse colocar reglas de negocio del lado de la capa presentacion ( En ese caso, el cliente) y usar siempre WCF, el WCF debe tener todos los procedimientos de negocios y datos. Cuando se quiera hacer una llamada al WCF, ´´esta debe pedir credenciales antes de devolver algun resultado, asi garantizan más la seguridad de la información y procedimientos.

    En realizad es algo estúpido (disculpen la expresión) realizar procesos de negocios del lado del cliente.

    todo está en la arquitectura del software.

    Saludos!

    Soy desarrollador .Net

Responder a elbruno Cancelar respuesta

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