Gdb

De whats Wiki

Dreceres ràpides: navegació, cerca

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