Gdb
De whats Wiki
Patchejar un fitxer
Activar el mode d'escriptura
gdb> set write on
Escriure un valor a una posició
gdb> set * (unsigned char *)0x08048456 = 0x31
Setejar el valor d'un registre
set $eip = 0x13232343
Breakpoint
Posar un breakpoint
b *0x41414132
Eliminar un breakpoint
info b delete 3 (o el número q toqui)
Altres
Per veure com estan els registres
info registers
Per analitzar un core-dump
x61s src # gdb login Core was generated by `6��s�W��=VLz�hmD�Uz�3Dy},<�$|z����u�%3�-'. Program terminated with signal 11, Segmentation fault. #0 0x0804c2cc in decrypt_byte (ctx=0xbfb27fac, byte=192 '�') at crypto.c:61 61 res = byte ^ ctx->key[ctx->off]; (gdb)
Per a veure el codi en ensamblador
disas main o disas funció
Per veure el codi font del programa
gdb) list
1 main()
2 {
3 int i;
4 for(i = 0; i < 100; i++)
5 {
6 printf("%d\n", i);
7 }
8 printf("we are now outside of the loop. yay.\n");
9 return 0;
10 }
Per veure a quina posicio de memoria hi ha una variable
print &variable
Per veure quin valor conte una variable
print variable
Per veure quin valor te un registre
print $ebp print $ebp+4 print $ebp+c (els increments son en hex.)
Per veure el contingut d'una posicio de memoria
x 0xbfe775bf
Per veure el contingut de 24 posicions de memoria a partir d'una posicio
x/24 0xbfe775bf
Per veure el contingut d'una posicio de memori en ascii
x/24s 0xbfe775bf
Per enganxar-te a un procés
(gdb) attach 17531
Altres
- per el gdb: les posicions de memoria, totes son positives, encara q tinguin
0xba04.... , els desplaçaments si q poden ser negatius
- ca2: two's complement
- gcc: movl A -> B
