Hoja de referencia para comandos útiles de GDB

¿Para quién?



1) ingenieros inversos principiantes que conocen las peculiaridades de la ingeniería inversa y quieren aprender un depurador como GDB







2) como una pista para quienes trabajan constantemente con IDA, Ghidra o cualquier otra herramienta poderosa y confiable, pero debido a ciertas circunstancias, es más fácil y rápido resolver el problema usando GDB, y realmente no quiero ir a la documentación oficial y recordar todo nuevamente.







Comandos básicos



Corriendo



Sintaxis general para seleccionar un ejecutable para su análisis







gdb program_name
      
      





Iniciar la ejecución del programa







run | r
      
      





Únete a gdbserver







target remote host:port
      
      





Únase al proceso, desconéctese de él







attach PID / detach
      
      





gdb







quit | q
CTRL + D
      
      













set disassembly-flavor intel/att
      
      





,







info file 
      
      











info functions | i func
      
      





asm-







disas func_name
disas address 
      
      





( -g3 gcc) ,







list func_name
      
      













set args
show args
      
      











info proc mappings
      
      











registers
      
      













step | s
      
      











next | n
      
      





,







until | u number_of_list_string
until | u *func_name+offset
until | u *address
      
      





, ( , )







info args
info locals
info frame
      
      











info threads
thread number
      
      





breakpoints







b func_name
b *func_name+offset
b *address
      
      





, , breakpoint







info break
disable/enable breakpoint_number
delete breakpoint_number
ignore breakpoint_number n  //        n 
      
      





breakpoint-







continue | c
      
      











telescope
telescope $rsp+64
      
      





x, "/"







x/i - 
x/x - hex
x/s - 
x/a - 
      
      











x/b - 8-bit
x/h - 16-bit
x/w - 32-bit
x/g - 64-bit
      
      











x/64bx
x/i $pc
      
      











run $(python -c "print('A'*32 + '\xde\xad')")
run $(echo "asdf\\xde\xad")
      
      











run <<< $(python -c "print('A1'*3)")
run <<< $(echo "asdf\xde\xad")
      
      





Gdb


gdb







gdbserver host:port program
      
      





Reverse Debug


, , CFG .. , gdb Reverse Debug, .







, gdb, reverse debug







record
      
      











reverse-step
reverse-next
      
      







( )







dump memory output_file start_addr end_addr
      
      







, display







display/5i $pc
display/g $rax
display/g $rbx
display/g $rcx
      
      





GEF



gdb gef, , , . .







aslr, /







aslr
aslr on/off
      
      





ASLR, Canary, PIE ..







checksec
      
      











heap chunks
      
      





,







canary
      
      





, info proc mappings







vmmap
      
      





Ver el registro de banderas y cambiarlas







flags
flags -Flag_name +Flag_name
      
      





Ayuda para encontrar vulnerabilidades de cadenas de formato (establecer puntos de interrupción en ellas, información sobre funciones encontradas)







format-string-helper
      
      





Crear un patrón y encontrarlo







pattern create 128
pattern search 0x61616167
pattern search $rbp
      
      





Buscar cadenas por patrón







search-pattern pattern
      
      





Parcheo







patch byte/word/dword/qword address value
      
      





Imprimir una matriz en un formato conveniente para copiar en código Python. El parámetro B debe ser 8/16/32/64, l controla la longitud de la matriz







Ejemplo







print-format -b 64 -l 1  $rsp
      
      





Para buscar shellcode por patrón







shellcode search pattern
shellcode get shellcode_number
      
      





Valores de Xorim en memoria y registros







xor display address/register size xor_key
xor patch address/register size xor_key
      
      






All Articles