Bueno, vamos a empezar explicando por qué es necesario programar en ensamblador, y no podría hacerse lo mismo en un lenguaje de (relativamente) alto nivel, como pueda ser C o PASCAL …
¿Por qué asm?
- Tenemos control total de las instrucciones generadas
- Código de tamaño mínimo
- Única forma de programar shellcodes
- Es necesario conocerlo en ingeniería inversa
- Si sabes programar en asm, los demás lenguajes son un juego de niños
- Algunos trucos (Self Modifying Code, por poner un ejemplo), sólo pueden usarse con assembly
- etc
Para programar en asm viene bien conocer algún lenguaje como C, aparte de tener cierta idea de cómo funciona una CPU y cómo se estructura el sistema operativo. No te preocupes, porque iremos poco a poco, intentando explicar las cosas paso a paso.
Empezaremos por descargarnos e instalar unas cuantas cosas:
- Ensamblador: a mí me gusta masm32.
- Debugger: ollydbg es el más usado y seguramente el mejor para user-level (ring3)
- API reference (referencia de llamadas al sistema de windows): la tenéis online en msdn, aunque también las hay «compiladas» para descargar.
Aparte de esto, y aunque sólo sea una cuestión de gustos, viene bien tener un IDE para assembly. En mi caso, he probado y me gustan los dos siguientes:
El primero puede descargarse con masm32 pre-instalado, aunque EasyCode es realmente fácil de configurar (basta ajustar el path al compilador, linker, etc). De todas formas, ya te aviso de que usaremos poquitas cosas del IDE, pero viene genial para chequear la sintaxis conforme vas escribiendo …
Con esto, podemos empezar…
Entradas relacionadas