Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

El Arma Prohibida

–Uso de un Depurador de Codigos–

Cierto filósofo alemán del siglo 19 dijo alguna vez que a quien comete un crimen por primera vez debía de ser castigado con mas rigor que a quien lleva delinquiendo toda su vida. La primera vez que leí esta declaración no le encontré sentido sino hasta años despues que me documenté sobre leyes y seguridad computacional. Resulta que muchas prácticas habituales de alguien que programa en Ensamblador son consideradas actos criminales si se llegan a juntar determinadas circunstancias. La herramienta de la que les hablaré hoy tiene mucho de eso, incluso algunos sistemas de seguridad en Internet son capaces de reconocer cuando una computadora tiene dicho software instalado y actuar en contra nuestra.

Pero antes de que corran a denunciarme a las autoridades locales, lean primero lo que realmente es una herramienta de depuración de código. Un depurador de código es una herramienta capaz de tomar un programa ejecutable ya construido y estudiarlo para ver como funciona. Digamos que si un Editor Hexadecimal son los Rayos X, un depurador de código es una Tomografía Axial Computarizada. Incluso existe algo llamado ‘Depuradores a Nivel Nucleo’ capaces de cargarse junto con el sistema operativo de una máquina y monitorear el funcionamiento de todo su software en tiempo real. El uso original de estas herramientas era perfectamente legal: Encontrar y reparar errores en tiempo de ejecución que son los mas peligrosos. Supongamos que hicimos un programa que suma dos números y no encontramos la falla en ninguna parte del código, este se ensambla sin ningún problema, pero a la hora de ejecutarse: Boom!

Con un depurador podemos echar a andar el programa y ver lo que realmente pasa dentro de él y detectar el error de maneras que no sería posible con otros medios. Sin embargo, estas herramientas también pueden ser usadas para el mal como se muestra a continuación:

Supongamos que un ‘desarrollador’ crea una aplicación que hace cualquier cosa aburrida de bases de datos y esas cosas, pero que para usarla sin restricciones hay que pagar miles de dólares a su creador para que este nos suelte una contraseña que activará todas las funciones del programa. Ahora imaginemos a un malvadísimo delincuente informático de sombrero negro, capa y bigotillo rizado que quiere robarse el código y no darle un centavo al creador del programa. Lo único que tendría que hacer este delincuente informático es pasar el software bloqueado por un depurador de código y monitorear su funcionamiento en tiempo real. Con la suficiente paciencia y conocimiento de Ensamblador sería capaz de identificar las rutinas de seguridad y hacer una infinidad de cosas para brincarlas. De este modo, el criminal tendrá acceso a la aplicación sin haber pagado un solo centavo por ella. Si bien hay una infinidad de medidas de seguridad para evitar esta clase de delitos, para cada una existe una técnica para contrarrestarla por completo; aunque cada una es mas dificil que la anterior.

Otra clase de fechorías que es posible hacer con un depurador de código a nivel de nucleo es hacer trampa en los juegos en linea. Incluso algunos son capaces de detectar la presencia de estos e impedir que una computadora se conecte a sus servidores. También son muy útiles para detectar vulnerabilidades en los programas.

Todo esto puede o no ser un crimen dependiendo de los términos de la licencia del software. Algunos prohiben expresamente estudiar su código interno o alterar de cualquier manera los archivos ejecutables o los generados por estos. Así que nunca se olviden de leer los contratos de licencia de usuario final y los términos de servicio de los contratos que hagan por Internet.La única cuestión es para que un programador de ensamblador perfectamente honrado usaría una herramienta tan peligrosa.

Oficialmente no apruebo que se use el conocimiento técnico para afectar las ganancias de otros ni mucho menos para hacer mal uso de los datos privados de nadie. Pero en mi experiencia personal la manera mas rápida de aprender a programar en Ensamblador es estudiando código ejecutable con esta clase de depuradores. Pues los códigos fuente pueden engañarnos con sus macros, bibliotecas, notación húngara y dependencias extrañas pero la máquina nunca nos va a mentir. El código máquina es ejecutable directamente y si somos capaces de interpretar los datos que nos da un depurador de esta clase tendremos una ventaja insuperable. Por ejemplo, a mi me tomó años entender la verdadera estructura del DirectX en ensamblador, pues toda la documentación era para C – – (ni siquiera estaba disponible para C). Fue hasta que use una de estas herramientas que comprendí que el llamado a este tipo de funciones no tiene nada que ver con el sistema de llamada a función tradicional. Los contados ejemplos de como hacer esto en Ensamblador eran primitivos y revueltos con macros inintelegibles. Luego de un verano fui capaz no solo de usar todos estos servicios sino incluso de usar las versiones mas avanzadas de este sistema sin mas información que el SDK que uno puede descargar del sitio de Microsoft. Me río de la gente que se queja de no poder comprar libros sobre este tipo de temas en los paises del tercer mundo. Para ellos, tengo que advertirles que estos libros en realidad no dicen nada que no venga en el SDK de DirectX o en los ‘libros de colores’ oficiales de ‘OpenGL’.

Como pueden ver, lo único que estudié con estos depuradores fueron algunos ejemplos del FASM. No hice nada ilegal ni cuestionable y si aprendí a programar DirectX en Ensamblador. En su caso, les recomiendo que hagan lo mismo con los ejemplos de Ensamblador que encuentren. De ese modo podrán aprender mucho sin marearse con los códigos fuente que a veces no son mas que meras guias sobre el uso del programa. Mas adelante pondré mas notas sobre el uso de estar ‘armas prohibidas’ y como usarlas con honor. Recuerden que si el CLUF (EULA) lo prohibe, es delito y que hay gente que se asustará si los ve con estas cosas. Así que no vayan a hacer nada sin antes leer detenidamente las leyes de sus respectivos paises. En especial la DMCA (Digital Millenium Copyright Act) de Estados Unidos.

febrero 19, 2009 - Posted by | Uncategorized |

2 comentarios »

  1. Muy interesante mario, cadavez quieren limitarnos mas… el dia que el uso de un depurador sea ilegal.. que creo sera en proximos años… voy a estar enojado… pff la tendencia es hacia los lenguages dot net y java…

    Comentario por Puerco | marzo 31, 2009 | Responder

    • La tendencia es a abaratar lo mas posible los costos y esa ha sido al menos desde tiempos de Henry Ford. Como cuando dejaron de contratar ingenieros para construir coches y contrataron operadores de produccion. El software hecho con herramientas que bajan costos es para clientes que no necesitan una obra de arte. No porque haya mucha gente que compre Chevys y Atos va a dejar de ser negocio fabricar el Bentley o el Rolls Royce. Aunque hay que admitir que hay mucha mas gente construyendo y comprando el Atos.

      Comentario por asm86 | marzo 31, 2009 | Responder


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: