BlackNullSec Path #2: Pointer 2 Nedir?
🧠 Mental Model:
Pointer = adres tutar Ama bu adresler nerede? → Stack (otomatik bellek) → Heap (manuel bellek) Bu yüzden pointer öğrenmeden memory öğrenilemez.
Stack(Yıgın Bellek)
👉 Tanım:
- 1.)Otomatik
- 2.)Küçük ve hızlı
- 3.) Genelde int a=5
- 4.) Function içinde oluşur
- 5.) Otomatik silinir
Heap (Yıgın Bellek)
👉 Tanım:
- 1) programcı tarafından yonetilir
- 2.) Büyük boyutlu veri depolamak
- 3.)malloc(),relloc(),calloc()ayrılır
- 4.)Free() ile manuel temizlenir.
- 5.)Program bitene kadar kalabilir
- 6.)- Yanlış kullanılırsa memory leak olur
malloc(size)=Heaptan(size) kadar byte ayırır Free(ptr) = Daha once mallox ile ayrılmış alanı temizler memset(ptr,val,size)=belirtilen(ptr) adresinden itibaren (size) kadar alanı(val) ile doldurur memcpy(dest,src,size)=kaynak(src)veriyi hedef(dest)kopyalar
memset(ptr,val,size)
👉 Tanım:
xptr=Hedef bellek adresi (başlangiç noktası)
xval=Hangi degerle doldurulacagı (or=0)
xsize=kaç byte dolduralacagı
Görevi=Bellegi belirli bir kısmında tek bir sabit degerle doldurmak
Genellikle bellek sıfırlama val=0 kullanılır
int arr [10]: memset(arr,0,sizeof(arr)); // arr içindeki tüm byte0 yapar
xptr=Hedef bellek adresi (başlangiç noktası)
xval=Hangi degerle doldurulacagı (or=0)
xsize=kaç byte dolduralacagı
Görevi=Bellegi belirli bir kısmında tek bir sabit degerle doldurmak
Genellikle bellek sıfırlama val=0 kullanılır
int arr [10]: memset(arr,0,sizeof(arr)); // arr içindeki tüm byte0 yapar
memcpy(dest,src,size)
👉 Tanım:
dest=verinin kopyalanacagı hedef adres
src=kaynak adres(verinin bulundugu yer)
size=kaç byte bellek kopyalandıgı
Ör:char source[]="Merhaba"
char destination[10];
memcpy(destination,source,strlen(source)+1);
dest=verinin kopyalanacagı hedef adres
src=kaynak adres(verinin bulundugu yer)
size=kaç byte bellek kopyalandıgı
Ör:char source[]="Merhaba"
char destination[10];
memcpy(destination,source,strlen(source)+1);
Not: Kaynaktan hedefe bellek kopyadan shellcode,dosya verisi,bellek üzerinden bir baska bir yere taşıma
malloc
Bellekten dinamik olarak yer ayırmanı saglar.,,
👉 Örnek
int *ptr=(int *)malloc(sizeof(int)),
malloc(sizeof(int))->Bellekte inr kadar yer ayır
int *ptr=(int *)malloc(sizeof(int)),
malloc(sizeof(int))->Bellekte inr kadar yer ayır
🧪 Pointer + Heap Örneği
int *p = malloc(sizeof(int)); *p = 10;
int *p = malloc(sizeof(int)); *p = 10;
- 1.) malloc heap'te yer ayırır
- 2.) pointer bu adresi tutar
- 3.) *p ile o adrese veri yazılır
⚠️ Kritik Uyarı
Bu teknikler yalnızca eğitim amaçlıdır. Gerçek sistemlere uygulanması yasadışı olabilir. Asla gerçek ortamlarda test etme.
🌟 Sonraki Yazı: Pointer_3
← Önceki Sonraki →
BlackNullSec
“Windows Belleğiyle Konuşan Kodlar”
“Windows Belleğiyle Konuşan Kodlar”
hacker