Curso de programación de virus

Introducción

 

Publicaciones

Están disponibles las siguientes partes del curso:

I.- Estructura de computadores

II.- Fundamentos de SSOO

 

Objetivos del curso

La meta de este curso es el aprendizaje de métodos en programación, tanto en teoría como en práctica, de virus informáticos. No obstante, no ofreceré el camino típico; esto es, aprender ensamblador, aprender formatos de ficheros e infectar. Con alguna experiencia en el tema, creo que lo primero que hay que hacer no es ponerse a programar como un salvaje sin entender qué se está tocando y cómo funciona: se dará pues una visión general acerca de todo aquello que se va a tocar (arquitectura de un computador y sistemas operativos), necesaria antes de empezar a programar nada, y con esto en mente debería de resultar muchísimo más sencillo no ya sólo programar virus, sino desarrollar cualquier otro tipo de aplicaciones que necesiten conocimientos de este estilo.

 

Organización

Este curso se dividirá en las siguientes unidades:

I.- Estructura de computadores: En esta primera parte, se analiza el funcionamiento de un microprocesador estándar (ALU, registros, unidad de control), su relación con las unidades de memoria, buses y E/S, así como el funcionamiento interno dando pequeños trazos de microprogramación de instrucciones y juegos básicos genéricos de instrucciones para micros.

II.- Fundamentos de SSOO: Aquí se analiza el funcionamiento básico de un sistema operativo; análisis de los niveles de shell, API y kernel, y detalle sobre gestión de procesos, organización de ficheros...

III.- Sistemas de Numeración: Tocando el binario, hexadecimal, y aritméticas binarias.

IV.- Ensamblador partes I (básico) y II: Llegados a este punto, tocará el aprendizaje del lenguaje ASM; instrucciones básicas y relación con la API del SO, tanto en Windows como en Linux (se dejará bastante de lado el Ms-Dos como ya obsoleto, aunque pueda utilizarse para ejemplos más sencillos).

V.- Utilidades para la programación: Visores hexadecimales, ensambladores, debuggers y desensambladores.

VI.- Programación de virus informáticos: Técnicas de infección, etc etc etc.

 

Algunos consejos antes de empezar

* Escribir virus informáticos no es fácil. Requiere esfuerzo, requiere muchas horas delante de un ordenador, a veces tan solo para corregir diez líneas de código que no sabes por qué no funcionan. La paciencia es el primer arma con la que hay que contar.

* Eso implica una cosa; escribe virus porque te guste escribir virus. Quien pretende ser el mega-h4x0r y llenar el mundo de bichitos o cualquier cosa así, se quemará cuando tenga que tirarse dos horas debuggeando código hasta descubrir que algo no funciona porque se le olvidó añadir una estupidez. Destruir es muy sencillo, lo difícil es crear.

* Imaginación es la clave a la hora de escribir virus informáticos; el mundo está lleno de gente que escribe bazofia con lenguaje de Macro de Word, o incluso de programadores que aunque muy buenos técnicamente, no aportan nada cuando escriben algo. Un virus sencillo que tenga algo nuevo aporta mucho más que el m3g4v1rus de 30kb que infecta diez mil tipos de fichero que ya han sido infectados antes.

* Si parte de tus pretensiones se orientan hacia la rama que llamaríamos hacktivista, ten cuidado con los programas autorreplicantes si quieres darles el uso de arma; mide sus posibilidades, pues la difusión de un virus probablemente cause no más que daños a usuarios inocentes. Los virus como baza antisistema, como método del caos, serían todo un tema a discutir pero que evidentemente no tocaré en este curso y es responsabilidad de cada persona individual.

* Por último, aclarar que mi única labor aquí es transmitir información. Lo que cada uno haga con ella es asunto suyo; ni me siento ni soy responsable de aquello que cada persona pueda decidir hacer una vez dotado de los conocimientos suficientes para escribir programas autorreplicantes (virus). Mantengo mi propia ética respecto a los virus informáticos, pero esta no tiene por qué coincidir con la de quien lea este curso; toma tus propias decisiones y sé responsable de ellas.