Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Cadenas protegidas y su efecto en la lectura

5 tareas · 38 min · Principiante

La facilidad de leer un decompilado de .NET también la conocen quienes escriben muestras, y muchas llegan con los nombres propios cambiados por letras y los textos sustituidos por llamadas a una función que los devuelve al ejecutarse. El programa hace lo mismo; lo que cambia es lo que se puede leer sin correrlo. El jueves llegó a Hilados Tausaquira M-4614, una segunda compilación del mismo proyecto que M-4611, y su decompilado ya no se lee igual. Aquí no se descifra nada: se compara lo que se perdió, se identifica lo que sigue a la vista y se usa lo que el entorno aislado recuperó de la memoria.

0 de 5 · 0%

Objetivo de la sala

La facilidad de leer un decompilado de .NET también la conocen quienes escriben muestras, y muchas llegan con los nombres propios cambiados por letras y los textos sustituidos por llamadas a una función que los devuelve al ejecutarse. El programa hace lo mismo; lo que cambia es lo que se puede leer sin correrlo. El jueves llegó a Hilados Tausaquira M-4614, una segunda compilación del mismo proyecto que M-4611, y su decompilado ya no se lee igual. Aquí no se descifra nada: se compara lo que se perdió, se identifica lo que sigue a la vista y se usa lo que el entorno aislado recuperó de la memoria.

Las herramientas que protegen un ensamblado suelen hacer dos cosas visibles en la salida. Renombran las clases, métodos y campos propios con nombres sin sentido, y sustituyen las cadenas literales por una llamada a un método que recibe un número y devuelve el texto en tiempo de ejecución. El resultado: el montón de cadenas de usuario se queda casi vacío y el código se llena de llamadas iguales con números distintos.

Hay algo que no pueden renombrar: los tipos y métodos del entorno que el programa usa, porque viven en otros ensamblados y el entorno los busca por su nombre. Un cliente HTTP, un temporizador o una consulta del nombre del equipo siguen apareciendo con su nombre real, y por eso la capacidad suele seguir leyéndose aunque el detalle no.

Responde para continuar

En un ensamblado con cadenas protegidas y nombres cambiados, ¿qué suele seguir leyéndose con su nombre real?

Ver pista de ayuda

Piensa en qué partes del programa no pertenecen al autor.

Antes de leer conviene medir. Comparar los metadatos de las dos versiones dice si es el mismo programa con otra cara o un programa distinto: si el número de clases y de referencias al entorno no cambia, la estructura es la misma y lo que se aprendió de M-4611 sirve para guiar la lectura de M-4614.

cat conteos.txt

Responde para continuar

¿Cuántas cadenas de usuario tiene M-4611 que ya no aparecen en M-4614? Escribe solo el número.

Ver pista de ayuda

Resta las dos cifras de la fila del montón de cadenas de usuario.

Cuando todos los textos pasan por un único método, ese método se vuelve el centro de la lectura: cada llamada con un número es un texto que el programa necesita en ese punto. Contar sus llamadas da una idea de cuánto texto escondido hay, aunque no diga cuál.

Responde para continuar

¿Cuántas veces llama M-4614 al método que devuelve las cadenas? Escribe solo el número.

Ver pista de ayuda

Está en la comparación de metadatos, en la fila de las llamadas.

En la clase c no queda ni una dirección legible, pero la capacidad sigue a la vista: el programa crea un objeto del entorno para hacer peticiones HTTP y lo usa para enviar por POST. Ese nombre no lo pudo cambiar la protección.

cat decompilado/c.cs

Responde para continuar

Escribe el nombre del tipo del entorno que delata en c.cs la capacidad de comunicarse por red.

Ver pista de ayuda

Busca el campo que se crea con new al principio de la clase.

No hace falta reproducir el método de las cadenas para saber qué devuelve. El entorno aislado puede anotar qué número pidió el programa y qué texto obtuvo durante su corrida. Esa lista se cruza con las llamadas del decompilado y devuelve el sentido a cada línea. Su límite: solo contiene los textos que se pidieron en esa corrida.

cat entorno-aislado/cadenas-en-memoria.txt

Responde para continuar

Escribe el número que recibe el método de las cadenas cuando el programa necesita la dirección del servidor.

Ver pista de ayuda

Busca la dirección en la lista recuperada y comprueba en c.cs dónde se usa ese número.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad