Debugger
Debugger (Hata Ayıklayıcı), çalışan bir programı analiz etmek, hataları tespit etmek ve yazılımın nasıl davrandığını daha iyi anlamak için kullanılan bir araçtır. Geliştiriciler ve güvenlik araştırmacıları, programın yürütülme sürecini adım adım izleyerek sorunları çözmek ya da yazılımın derinlemesine davranışını incelemek için debugger kullanır.
Debugger’lar sayesinde:
- Breakpoint (Durma Noktaları) belirlenebilir. Bu sayede program belirli bir noktada durdurulup incelenebilir.
- Kayıtlar (Registers), değişkenler (variables) ve yığın (stack) gibi işlemci bileşenleri gözlemlenebilir.
- Bellek dökümleri (memory dumps) alınabilir; bu da bir çökme (crash) sonrası ne olduğunu analiz etmeye olanak tanır.
- Program akışı kontrol edilebilir; adım adım ya da fonksiyon fonksiyon yürütme yapılabilir.
Popüler Debugger’lar:
- GDB (Linux sistemlerinde en çok kullanılan açık kaynak hata ayıklayıcı)
- x64dbg (Windows ortamında gelişmiş arayüzüyle kullanıcı dostu bir debugger)
- Immunity Debugger (Çoğunlukla exploit geliştirme alanında tercih edilir)
- WinDbg (Microsoft’un resmi debugger’ı)
Debugging
Debugging (hata ayıklama), bir yazılımın çalışması sırasında oluşan hataların analiz edilip düzeltilmesi sürecidir. Bu süreç hem statik (çalıştırmadan önce) hem de dinamik (çalışırken) analiz yöntemlerini içerir.
Debugging süreci genellikle şu adımları içerir:
- Sorunun Tanımlanması: Yazılımda beklenmeyen davranış veya çökme gözlemlenir.
- Araçların Kullanımı: Debugger ile yürütme süreci incelenir, disassembler ile program yapısı analiz edilir.
- Bellek ve Kayıt Analizi: Değişkenlerin ve bellek adreslerinin nasıl değiştiği takip edilir.
- Test ve Düzeltme: Sorun kod düzeyinde tespit edilip düzeltilir.
- Yeniden Test: Hatanın çözülüp çözülmediği tekrar kontrol edilir.
Disassembler
Disassembler, makine dilindeki (binary) komutları okunabilir assembly koduna çeviren araçlardır. Derlenmiş bir programın kaynak koduna erişim yoksa, disassembler kullanılarak programın nasıl çalıştığı anlaşılabilir.
Disassembler’lar yazılımların:
- İç yapısının analiz edilmesini,
- Fonksiyonların, çağrıların, döngülerin ve kontrol akışlarının ortaya çıkarılmasını,
- Bellek erişimlerinin ve sistem çağrılarının detaylı olarak gözlemlenmesini sağlar.
Disassembler’lar özellikle güvenlik araştırmacıları tarafından reverse engineering (tersine mühendislik) amacıyla kullanılır. Lisans kontrollerini analiz etmek, zararlı yazılım (malware) içeriğini incelemek veya sistem davranışlarını çözümlemek gibi birçok alanda kullanımı vardır.
Popüler Disassembler Araçları:
- IDA Pro: Gelişmiş disassembler’lardan biri, interaktif GUI sunar.
- Ghidra: NSA tarafından geliştirilen açık kaynaklı güçlü bir araç.
- Binary Ninja: Modern GUI, hızlı analiz ve script desteği ile öne çıkar.
- Hopper: MacOS ve Linux kullanıcıları için popüler bir seçenek.
Kaynakça:
Exploit Geliştirme 101 (2. Baskı) – M. ALPARSLAN AKYILDIZ
Hacking: The Art of Exploitation, 2nd Edition