Image

Malware giriş.

Malware

BlackNullSec Path : Pointer_6

🚀 Amaç:Bir pointer, bellekteki bir adresi tutan değişkendir. Yani başka bir değişkenin adresini saklar.

Pointer to Pointer (Double Pointer)

Önemli:
Bir pointer'ın adresini tutan pointer

int x=10;
int*p= & x; // p=x'in adresi
int **pp= & p; // pp=p'in nin adresi
printf("%d",**pp); // 10

Çok Önemli:
Pointer= evin adresi tutan kayıt
Pointer adresi= o kagıdın masadaki konumu
Sen birine "EVİNE GİT " demek istiyorsan kagıttaki adres yeterli -> *p
Sen birine "kagıttaki adresi degiştir demek istiyorsan " kagıdın masadaki adresini degiştir vermen gerekir -> **pp çünkü kagıt(pointer) taşınabilir
Önemli: Malwarede pointer'in adresi neden lazım
Process Hollowingde
STARTUPINFO ve PROCESS_INFORMATION structlarını createprocess'e verdiginde
CreateProcess(...,&si,&pi) yani struct'ın adresini veriyorsun
Neden:
Çünkü kernel bu struct içini degiştirmek zorunda
si -> start ayarları okunur
pi -> işlem bilgileri yazılır
Pointer'ı degil pointer adresini veriyorsun çünkü CreateProcess yeni degerler yazmak zorunda -> bunun yapıla bilmesi için struct'ın bulundugu adresi bilmesi gerekir
NOT: Eger sadece pointer gönderilseydi fonksiyon pointer'ın işaret ettigi yeri görür ama pointer'ın kendisini degiştiremezdi

Özet bilgi

Pointer -> Bellek bir verinin adresini tutar
Pointer'ın adresi -> Pointer'ın kendisini bellekte kullanmızı için bu fonksiyon
Pointer'ın işaret ettigi degeri degiştirmesi için --> int *p
Pointer'ın işaret ettigi adresi degiştirmesi --> int **pp bu sayede .
Başka fonksiyon pointer!ın içini deiştirebilir pointer'a yeni adres atanabilir Ve Pointer yeniden yonlendirilebilir


POINTER DEĞİŞTİRME ÖRNEĞİ

void change(int **pp){
static int y = 50;
*pp = &y;
}
int main(){
int x = 10;
int *p = &x;
change(&p);
printf("%d", *p); // 50
}

🧠 AÇIKLAMA:

1.) p pointer
2.) &p → pointer’ın adresi
3.) *pp → pointer’ın kendisini değiştiriyoruz


Pointer Seviyeleri:

*p → değeri değiştirir
**pp → pointer’ı değiştirir


MALWARE BAĞLANTISI

CreateProcess(..., &si, &pi)
→ si ve pi struct pointer
→ &si → pointer’ın adresi


Neden?

Çünkü Windows kernel:
- struct içine veri yazar
- pointer’ın gösterdiği yeri değiştirir

Image placeholder

Çıktı:

Image placeholder

Image placeholder

Image placeholder

Image placeholder


🌟 Sonraki Yazı: Pointer_7

← Önceki Sonraki →

⚠️ Kritik Uyarı

Bu teknikler yalnızca eğitim amaçlıdır. Gerçek sistemlere uygulanması yasadışı olabilir. Asla gerçek ortamlarda test etme.

← Önceki
BlackNullSec
“Windows Belleğiyle Konuşan Kodlar”