Reto puesto a los alumnos de 1 ITIG en la Universidad de Almeria.
Contexto: Estructura de Computadores en la Universidad de Almería.
Un archivo binario y ejecutable (emule.exe) quiere decir que contiene ceros y unos y que además esos ceros y unos codifican un programa. Un programa que se divide en datos y en instrucciones. Donde cada instrucción es una instrucción (acordaros de lo de las «fichas de lavado»), que pertenece a un conjunto de instrucciones (fichas de lavado) que se denomina repertorio de instrucciones.
DESCARGATE DESDE AQUI EL EJECUTABLE PARA MODIFICAR
Lo que aqui os presento es algo muy simple. Consiste en intentar que os aparezca el mensaje ACCEDES cuando al programa le deis una clave. El programa pide una clave, vosotros le dareis una (que evidentemente no coincide con la que el programa espera). Si le dais al programa una clave incorrecta, el mensaje NO ACCEDES aparecerá en pantalla (este mensaje es equivalente a no poder acceder a la funcionalidad del programa).
El reto es que teneis que intentar encontrar la ficha de plástico (instrucción) que determina si la comparación, entre la clave que vosotros le dais al programa y la que el programa tiene, es correcta. Para esto hay que localizar la instrucción y cambiarla por otra (del repertorio de ese procesador) -editando el archivo binario, nada de compilar ni historias- que diga que si las claves son diferentes, entonces tenemos permiso para entrar.
NOTA: Este es un ejercicio bastante complejo para alumnos de primero y casi sin experiencia. Este ejercicio sólo pretende haceros ver en la práctica el concepto : “DISTANCIA DE HAMMING” que se ve en mitad del tema 2 de la asignatura.
La distancia de HAMMING significa el número de bits en que dos elementos del mismo lenguaje son diferentes. SI dos elementos del mismo lenguaje solo difieren en un bit, si ese bit por error se altera entonces estaremos obteniendo por error un elemento que nadie puso alli.
Ejemplo: Intel codifica muchas de sus instrucciones con una distancia de HAMMING = 1
En intel la instrucción : “ACCEDER SI LA COMPARACIÓN DE CADENAS ES CORRECTA” se codifica con un 75
En intel la instrucción : “NO ACCEDER SI LA COMPARACIÓN DE CADENAS ES CORRECTA” se codifica con un 74
Asi que cambiando un sólo bit podemos llegar a cambiar el comportamiento de un programa. En este caso es una modificación intencionada (que se denomina CRACK del programa) pero imaginate que envias el programa por internet a un usuario y por el trayecto ese bit cncreto sufre una alteración, resulta que envias a tu usuario el programa para que acceda solo si tiene la clave. El programa que le llega al usuario, sin embargo es muy diferente: Accede SOLO si desconoce la clave, asi que cualquier usuario del mundo podrá usar tu programa sin pagarte.
Si lo deseais podemos ver cómo se altera este ejecutable para que os deje pasar.
¡Woah! A esto le llamo yo una buena clase práctica