Stack ve Register Davranışlarının Tersine Mühendisliği
Stack, fonksiyon çağrıları sırasında dönüş adreslerini, yerel değişkenleri ve bazı parametreleri tutan bellek alanıdır. Reverse engineering sırasında RSP ve RBP register'larının nasıl değiştiğini izlemek fonksiyon davranışını anlamayı sağlar.
Giris ve Temel Akis
Stack, fonksiyon çağrıları sırasında dönüş adreslerini, yerel değişkenleri ve bazı parametreleri tutan bellek alanıdır. Reverse engineering sırasında RSP ve RBP register'larının nasıl değiştiğini izlemek fonksiyon davranışını anlamayı sağlar.
Bu bölümün pratik akışı şu sırayla ilerler:
- push rbp
- mov rbp, rsp
- sub rsp, 20h
- mov [rbp-8], rcx
- call CheckValue
- add rsp, 20h
- pop rbp
- ret
Temel Kavram Eslesmeleri
Stack ve register analizi sırasında bazı register'lar program akışını anlamada kritik rol oynar.
- RSP: Stack'in en üst adresini gösterir
- RBP: Stack frame referans noktasıdır
- RIP: Çalıştırılacak sonraki komutun adresini gösterir
- RAX: Fonksiyon dönüş değerini taşır
Ilk Cekirdek Kavram
Bu bölümde öne çıkan çekirdek kavram RSP olarak verilir. x64 mimarisinde stack'in tepesini gösteren register, fonksiyon çağrıları ve yerel değişken takibi için sürekli izlenir.
Arac, Komut veya Inceleme Akisi
Fonksiyon çağrısı sırasında CALL komutu dönüş adresini stack'e yazar, ardından hedef fonksiyona geçiş yapılır. RET komutu ise stack'teki dönüş adresini okuyarak önceki akışa döner.
Bu bölümün pratik akışı şu sırayla ilerler:
- mov rcx, 1
- call TargetFunction
- Dönüş adresi stack'e yazılır
- TargetFunction çalışır
- ret ile dönüş adresi okunur
- mov rax, 0
- ret
Kanit ve Bilesen Iliskileri
Stack üzerindeki farklı değerler reverse engineering sırasında fonksiyonun amacını ve akışını anlamaya yardımcı olur.
- Return Address: Fonksiyon bittikten sonra dönülecek adres
- Local Variable: Fonksiyon içinde kullanılan geçici veri
- Saved RBP: Önceki stack frame referansı
- Shadow Space: Windows x64 çağrı standardında ayrılan alan
Ikincil Odak Noktasi
Bu bölümde öne çıkan çekirdek kavram Return Address olarak verilir. CALL komutu çalıştığında CPU, fonksiyon tamamlandıktan sonra nereye döneceğini bilmek için dönüş adresini stack üzerine yazar.
Operasyonel Dogrulama ve Raporlama
Stack tabanlı buffer overflow analizinde yerel değişkenlerin return address'e yakınlığı incelenir. Amaç, taşmanın kontrol akışını değiştirip değiştirmediğini anlamaktır.
Bu bölümün pratik akışı şu sırayla ilerler:
- char buffer[32]
- input > buffer
- buffer overflow oluşur
- return address overwrite edilir
- RIP saldırgan kontrollü adrese yönlenir
Cikti ve Kullanım Amaci
Reverse engineering sırasında stack güvenlik mekanizmaları da analiz edilir. Bu mekanizmalar exploit geliştirmeyi zorlaştırır.
- Stack Canary: Return address bozulmadan önce taşmayı tespit eder
- ASLR: Bellek adreslerini rastgeleleştirir
- DEP/NX: Veri bölgesinden kod çalıştırmayı engeller
- Control Flow Guard: Geçersiz dolaylı çağrıları engellemeye çalışır
Son Kavram ve Cikis
Bu bölümde öne çıkan çekirdek kavram RIP olarak verilir. Stack overflow saldırılarında saldırganın kontrol etmeye çalıştığı en kritik register, yürütülecek sonraki komut adresini tutan register'dır.
Bu Egitimden Ne Kazanirsiniz?
Bu icerik, Stack ve Register Davranışlarının Tersine Mühendisliği konusunu SOC L3 - Tersine Mühendislik - Anti-Debug ve Kernel Analizi baglaminda parcali degil, butunlu bir ogrenme akisina donusturur. Yalnizca kavramlari ezberlemek yerine surec sirasini, bilesenler arasi iliskiyi ve hangi kanitin neden onemli oldugunu kavramayi hedefler.
Ozet
Bu ders kapsaminda one cikan basliklar: RSP, RBP, RIP, RAX, Return Address, Local Variable, Saved RBP, Shadow Space, Stack Canary, ASLR. Egitimin mantigi; once temel akis kurmak, sonra eslestirme ve kavram netlestirme yapmak, en sonda ise bulguyu operasyonel bir sonuca baglamaktir.