BlackNullSec Path #2: Pointer 2 Nedir?
🚀 Amaç:Bir pointer, bellekteki bir adresi tutan değişkendir. Yani başka bir değişkenin adresini saklar.
🔎 Neden Pointer Kullanırız?
Bellek Yönetimi: Dinamik hafıza ayırmak için (malloc, calloc, free).Fonksiyonlara Veri Aktarımı: Referansla parametre göndererek gerçek değişkenleri değiştirebiliriz.Verimli Kod: Kopyalama yerine adresle işlem yapmak daha hızlıdır.Düşük Seviye Erişim: Donanım, işletim sistemi ya da özel bellek alanlarına erişim sağlamak için.
🧪 Pointer ile Değer Değiştirme
&-> degişkenin adresini alır
*-> pointer'ıdereference ederek işaret ettigi degere eşit
NULL-> Hiçbir adresi gostermeyen ozel bir pointer degeri
Örnek:
int x=42;
int *p=&x; // P,X'in adresini tutar
printf(%d\n,*p); Çıktı 42 (p'nin işaret ettigi)
NOT= burada x'e 42 degeri verildi sonra(&x) ile adresi alındı sonra(*p içine adresteki veriyi yaz)
NOT:*p=adresi yazmaz degeri yazar yani "x=42"'nin adresini alır '
(&x) ise x'in adresini alır "42" in
1. Malwarede Pointer
LPVOID remoteMem=VirtualAlocEx(hProcess,NULL,size,mem_commmıt,PAGE_READWRITE);
remote->başka bir prosesin bellegindeayırdıgımız adres
shellcode->Bizim pointer'ımız (unsigned char*) bellekteki shellcode verisini gosteriyor
NOT= shellcode-> içerigi
remoteMem-> hedef adres
pointer mantıgı-> neyi nereye yazagacımızı belirtir
Stack(Yıgın Bellek)
1.)Otomatik 2.)Küçük ve hızlı 3.) Genelde int a=5
Heap (Yıgın Bellek)
1) programcı tarafından yonetilir
2.) Büyük boyutlu veri depolamak
3.)malloc(),relloc(),calloc()ayrılır
4.)Free() ile manuel temizlenir.
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)
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)
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
LPVOID remoteMem=VirtualAlocEx(hProcess,NULL,size,mem_commmıt,PAGE_READWRITE);
remote->başka bir prosesin bellegindeayırdıgımız adres
shellcode->Bizim pointer'ımız (unsigned char*) bellekteki shellcode verisini gosteriyor
NOT= shellcode-> içerigi
remoteMem-> hedef adres
pointer mantıgı-> neyi nereye yazagacımızı belirtir
1.)Otomatik 2.)Küçük ve hızlı 3.) Genelde int a=5
1) programcı tarafından yonetilir
2.) Büyük boyutlu veri depolamak
3.)malloc(),relloc(),calloc()ayrılır
4.)Free() ile manuel temizlenir.
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
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
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
Bellekten dinamik olarak yer ayırmanı saglar.,,
Ör:
int *ptr=(int *)malloc(sizeof(int)),
malloc(sizeof(int))->Bellekte inr kadar yer ayı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.
BlackNullSec
“Windows Belleğiyle Konuşan Kodlar”
“Windows Belleğiyle Konuşan Kodlar”
hacker