domingo, 28 de octubre de 2018

Lenguaje Ensamblador ( I )

El estudio de este lenguaje de me ha permitido ver la programación desde un punto de vista diferente, si bien es cierto que el desarrollo puede ser inicialmente menos fluido que con los lenguajes de alto nivel, me parece que nos permite tener un mejor conocimiento sobre como funcionan nuestros programas.

Este lenguaje nos permite entonces interactuar de una manera diferente con la máquina diría yo que algo mas de tu a tu, puesto que vemos con algo mas de detalle como el procesador interactua con la información que vamos suministrando al programa y los resultados que el va generando.

Empecemos por el principio, el procesador de una computadora basa su trabajo en unos elementos llamados Registros, los cuales utiliza para obtener información, procesarla y devolver resultados, tareas que realiza mediante su conjunto de instrucciones ambos elementos tanto los registros como el conjunto de instrucciones dependen de su arquitectura.

Las entradas que escribo de momento corresponden a la arquitectura intel x86_64.

sábado, 15 de septiembre de 2018

Desarrollando habilidades con radare2


Siempre me ha gustado buscar el modo geek de las herramientas que utilizo fue por ello que decidí mudarme a Linux desde hace tiempo, actualmente estudio lenguaje ensamblador porque me interesa incursionar el análisis de malware; para ello es necesario el uso de diferentes herramientas que nos permiten efectuar los tres pasos básicos de la ingeniería inversa:

1. Recopilar información
2. Desensamblar
3. Depurar

Sin embargo, antes de llegar a esos pasos es necesario tener unos buenos conocimientos sobre el Lenguaje Ensamblador, el cual nos permite comprender el código que ejecuta la maquina para realizar las tareas que se le han asignado.