sábado, 11 de octubre de 2008

Lenguaje ensamblador & procesador x86

Familia x86
CPU 8086 fue el primer procesador x86 -> desarrollado por Intel

Procesadores más avanzados de la misma familia: 80186, 80286, 80386 y 80486.

Herramienta GDB
Las herramientas de desarrollo de GNU incluye un debbuger llamado GDB. Un debbuger da información al programador sobre los registros y la memoria.

Los registros
EAX -> Accumulator
ECX -> Counter
EDX -> Data
EBX -> Base

ESP -> Stack pointer (almacena direcciones de 32bits)
EBP -> Base pointer
(almacena direcciones de 32bits)
ESI -> Source Index
EDI -> Destination Index

EIP -> Instruction pointer (apunta a la instrucción)
EFLAGS -> varios bit flags

Lenguaje ensamblador
Usare la sintaxis de Intel para el lenguaje ensamblador.
Configurar el GDB para que trabaje con esta sintaxis
gdb -q
(gdb) set dis intel
(gdb) quit

Sintaxis Intel -> operacion

Operaciones basicas:
mov -> mueve un valor de un origen a un destino
sub -> resta
inc -> incrementa
cmp -> compara valores

mov ebp,esp
sub esp,0x8

El compilador GCC incluye información extra de debbuging usando el -g
gcc -g primerprograma.c
gdb -q ./a.out
(gdb) list -> sale el programa en c
(gdb) disassemble main -> muestra el código ensamblador

word -> 2-bytes
double word DWORD -> 4-byte
x86 -> almacena los valores en orden little-endian, el valor menos significativo es almacenado primero



domingo, 14 de septiembre de 2008

Acto de graduación del IE 2008

Interesantisima charla de Bernardo Hernandez Gonzalez (unico español perteneciente a la dirección mundial de google)

http://download.ie.edu/graduacion08/graduacion2008_24_Julio.htm

screencast con VLC

VLC media player.

Es un reproductor multimedia del proyecto videolan.
Es software libre distribuido bajo licencia GPL.
Soporta muchos codecs de audio y video.

http://www.videolan.org/vlc/

Screencast con VLC

Abrir VLC --> menú Archivo (File) --> Asistente (Wizard) -->Transcodificar/Salvar a archivo (Transcode/Save to file) --> siguiente(next) -->en el textbox poner screen:// -->siguiente --> Transcodificado (Transcode) del video y Transcodificar audio (Transcode audio) --> elejimos codecs (por ejemplo MPEG-1) --> le damos nombre --> y fin

El vlc se habra quedado grabando hsta que le demos a STOP
El video lo deja en el directorio (carpeta en windows) donde esta el ejecutable

salu2 ñ_ñ

c: tipos de datos y tamaño en memoria

#include

int main() {
printf("El tipo de dato 'int' es\t\t %d bytes\n", sizeof(int));
printf("El tipo de dato 'unsigned int' es\t %d bytes\n", sizeof(unsigned int));
printf("El tipo de dato 'short int' es\t %d bytes\n", sizeof(short int));
printf("El tipo de dato 'long int' is\t %d bytes\n", sizeof(long int));
printf("El tipo de dato 'long long int' es %d bytes\n", sizeof(long long int));
printf("El tipo de dato 'float' es\t %d bytes\n", sizeof(float));
printf("El tipo de dato 'char' es\t\t %d bytes\n", sizeof(char));
}

c : punteros y direcciones de memoria 1

#include

int main() {
int int_var = 5;
int *int_ptr;

int_ptr = &int_var; // pone la direccion de int_var en int_ptr.

printf("int_ptr = 0x%08x\n", int_ptr);
printf("&int_ptr = 0x%08x\n", &int_ptr);
printf("*int_ptr = 0x%08x\n\n", *int_ptr);

printf("int_var esta localizada en 0x%08x y contiene %d\n", &int_var, int_var);
printf("int_ptr esta localizada en 0x%08x, contiene 0x%08x, y apunta a %d\n\n", &int_ptr, int_ptr, *int_ptr);
}

libpcap

Programar una aplicación que capture paquetes:

Librería --> Linux --> libpcap
Manual: www.e-ghost.deusto.es/docs/2005/conferencias/pcap.pdf


Windows --> winpcap

Interesante para hacerte un programita que analice el trafico que pasa por tu tarjeta de red.

Usada por: tcpdump , WireShark (antes Ethereal), Nmap , Cain y Abel , y Snort.

En algunas versiones de la libreria se han detectado fallos de seguridad.

Fuente: wikipedia, e-ghost

lkm

LKM = Linux Kernel Module = Modulo del kernel de linux

- Se ejecutan en ring0 (Kerneland) --> forman parte del kERNEL
- Aplicaciones de usuario (Userland) --> usan la syscall para acceder a los recursos controlados por el Kernel, si el Kernel no les deja se joden.

comandos:

insmod --> carga un modulo en el kernel --> insmod module_name
rmmod --> descarga un modulo del kernel --> rmmod module_name
lsmod --> lista los modulos que hay cargados en el kernel --> lsmod

Para compilar los ejemplos necesitas tener instalados los sources de tu kernel.



Fuente: http://mazard.info/?mod=docs&xml=lkm_joca
Publicado por JoCaNoR en JoCaLaBS.