CyberFlow Logo CyberFlow BLOG
Soc L3 Reverse Engineering

Stack ve Register Davranışlarının Tersine Mühendisliği

✍️ Ahmet BİRKAN 📂 Soc L3 Reverse Engineering

Stack ve Register Davranışlarının Tersine Mühendisliği konusunu SOC L3 - Tersine Mühendislik - Anti-Debug ve Kernel Analizi baglaminda blog formatinda ogrenin. Temel akis, kavram eslestirmeleri ve analiz mantigi tek bir yapida birlestirildi.

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.