Image

Malware giriş.

Malware

BlackNullSec Path : Pointer_5

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

🔎 Neden Pointer Kullanırız?


🧪 Function Pointer

Not:
Normal pointer=Veri adresini tutar.
Function Pointer= Fonksiyonun adresini tutar.
yani fonksiyonun bir degişken gibi saklayabilir,çagırabilirsin

Windows Apı'de neden function pointer gerekir
1-)GetProcAdddres Apı adresini void* olarak dondür
2-)NtDll içinde dinamik Apı resolve ederken Function kullanın
3-)Reflective Loader/Manuel Mapping -> Apılerin pointer saklar
4-)Thread yaratırken EntryPoint fonsiyonu pointer olarak veririsin
ÖR: typeDef NTSTATUS(NTAPI *FnNTWriteVirtualMemory)(
HANDLE,PVOID,ULONG,PULONG
); Bu satırı anlamı *FnNTWriteVirtualMemory isimli degişken bir fonksiyonun adresini tutacak yani=Bu adresi çagırdıgımızda NTAPI çalışıcak.


🥇 ÖRNEK

int add(int a, int b){
return a + b;
}
int (*fp)(int, int) = add;
printf("%d", fp(2,3)); // 5


AÇIKLAMA:

1.) add = fonksiyonun adresi
2.) fp = o adresi tutan pointer
3.) fp() = fonksiyonu çağırır


🥈 2. NORMAL POINTER vs FUNCTION POINTER

Normal Pointer:
int *p → veri adresi tutar
Function Pointer:
int (*fp)(int,int) → fonksiyon adresi tutar


⚡GETPROCADDRESS

typedef HANDLE (WINAPI *FnCreateFileA)(
LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES,
DWORD, DWORD, HANDLE
);
FARPROC addr = GetProcAddress(hModule, "CreateFileA");
FnCreateFileA CreateFileA = (FnCreateFileA)addr;
CreateFileA("test.txt", ...);

AÇIKLAMA:

1.) GetProcAddress → adres verir (void*)
2.) cast → doğru tipe çevirir
3.) pointer → fonksiyonu çağırır


🌟 Sonraki Yazı: Pointer_6

← Ö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.

BlackNullSec
“Windows Belleğiyle Konuşan Kodlar”