EXP-101: 6-GDB ile Debugging’e Giriş: Temel Komutlar

GDB (GNU Debugger), C ve C++ gibi derlenmiş dillerle yazılmış programları hata ayıklamak için kullanılan güçlü bir araçtır.

GDB’yi Başlatmak

GDB, genellikle terminalden aşağıdaki gibi başlatılır:

gdb ./program

1. help

GDB içindeki komutları ve kategorileri listeler.

(gdb) help

Bu komutla birlikte hangi komutun ne işe yaradığını görebilirsiniz.

2. checksec

Binary’nin güvenlik önlemlerini kontrol etmek için kullanılır. Bu komut gef ya da pwndbg gibi GDB eklentileri yüklü ise çalışır.

(gdb) checksec

Bu özellikler binary’nin istismar edilebilirliğini doğrudan etkiler. Hangi güvenlik kontrollerinin ne anlama geldiğini daha sonra inceleyeceğiz.

3. info functions

Programdaki tüm fonksiyonları listeler.

(gdb) info functions

Bu komut, main gibi giriş fonksiyonlarını bulmak için kullanışlıdır.

4. disassemble main

Belirtilen fonksiyonun assembly kodlarını döker.

(gdb) disassemble main

Bu komutla main fonksiyonunun makine dilinde nasıl yazılmış olduğunu görürüz.

5. r (run)

Programı başlatır.

(gdb) r

6. break *breakpointadress

Belirtilen adresin bulunduğu noktaya durma noktası koyar.

(gdb) break *breakpointadress

Bu sayede kodun yürütülmesini tam olarak istediğiniz adreste durdurabilirsiniz.

7. info breakpoints

Tanımlı tüm breakpoints’leri gösterir.

(gdb) info breakpoints

Buradan aktif/inaktif durumları ve adresleri görebilirsiniz.

8. c (continue)

Kodun yürütülmesini breakpoint’e kadar devam ettirir.

(gdb) c

9. disable 1

Belirtilen ID’ye sahip breakpoint’i devre dışı bırakır.

(gdb) disable 1

1, info breakpoints ile listelenen ID’dir.

10. nexti ve stepi

Assembly seviyesinde adım adım ilerlemeyi sağlar:

  • nexti (ni): Bir sonraki instruction’a geçer (fonksiyonlara girmez).
  • stepi (si): Bir sonraki instruction’a geçer ve fonksiyon varsa içine girer.
(gdb) nexti
(gdb) stepi

Bu komutlar özellikle fonksiyon çağrılarını analiz etmek için faydalıdır.

11. info registers

Tüm CPU kayıtlarının (registers) mevcut değerlerini gösterir.

(gdb) info registers

Bu komutla EAX, EBX, EIP, ESP gibi kayıtların anlık değerlerini takip edebilirsiniz.

12. info stack

Yığının (stack) içeriğini ve çağrı geçmişini gösterir.

(gdb) info stack

Fonksiyon çağrı sırası ve yığın üzerindeki değerler hakkında bilgi verir.

13. vmmap

Bellek segmentlerinin detaylı haritasını verir. Yalnızca gef veya pwndbg yüklüyse çalışır.

(gdb) vmmap
  • Kod segmenti (text)
  • Veri segmenti (data)
  • Stack, heap Bu alanların adres aralıklarını ve izinlerini gösterir.

Kaynakça:

https://www.corelan.be

Exploit Geliştirme 101 (2. Baskı) – M. ALPARSLAN AKYILDIZ

Hacking: The Art of Exploitation, 2nd Edition