Custom GetProcAddress

Giriş Windows sistemlerinde C veya C++ ile geliştirme yaparken, bir DLL içindeki fonksiyonu çağırmak için genellikle GetProcAddress kullanırız. Süreç temelde basittir: LoadLibrary ile DLL belleğe alınır, ardından GetProcAddress‘e DLL’in handle değeri ve aranan fonksiyonun adı verilir. Peki bu işlem arka planda tam olarak nasıl işliyor? İşletim sistemi, verdiğimiz string değerini büyük bir bellek bloğu içinde nasıl bulup bize adresini dönüyor? Bu yazıda, standart Windows API’lerini kullanmak yerine bir PE dosyasının bellek yapısını çözümleyerek kendi GetProcAddress fonksiyonumuzu yazıyoruz. ...

27 Ekim 2026
5 dk
0xGently

Custom GetModuleHandle

Giriş Windows API’lerinin arka planda tam olarak nasıl çalıştığını incelemek Zararlı yazarken bize çok sayıda yeni teknik ve taktik kazandırır. Bu yazıda, en sık kullanılan API’lerden biri olan GetModuleHandle fonksiyonunu, hiçbir Windows API’si çağırmadan sıfırdan nasıl implemente edebileceğimizi inceleyeceğiz. Tabiki bunu yapma sebeplerimizden en büyüğü sürekli kullanmış olduğumuz bu fonksiyonu IAT(Import Address Table) içerisinden gizlemek. Bildiğiniz gibi GetModuleHandle, verdiğiniz bir DLL ismine karşılık o modülün bellekte yüklü olduğu base adresini döner. Yaptığı işlem aslında gayet nettir: OS loader tarafından her process için tutulan ve yüklü modülleri barındıran bir listeyi taramak. Bu liste, Process Environment Block (PEB) yapısının içinde yer alır. Bu yazının odak noktası da PEB’e manuel olarak ulaşıp bu listeyi nasıl parse edeceğimizi adım adım göstermek olacak. ...

25 Ekim 2026
10 dk
0xGently

Local APC Injection

Apc Injection Günümüzde birtakım zararlılar yazma konusunda payload’umuzu çalıştırmak için kullandığımız birçok teknik var. Bu yazıda, işletim sisteminin doğal işleyişini kendi lehimize kullandığımız, en temel ve etkili yöntemlerden biri olan APC Injection tekniğine odaklanacağız. İşin bellek ayırma gibi her enjeksiyonda tekrarlanan standart kısımlarıyla vakit kaybetmeden doğrudan tekniğe odaklanacağız. APC Nedir ? (Asynchronous Procedure Call) En basit haliyle APC, belirli bir thread bağlamında asenkron olarak çalıştırılmak üzere sıraya alınmış bir fonksiyondur. Windows işletim sisteminde çalışan her thread’in kendine ait bir APC kuyruğu bulunur. ...

21 Ekim 2026
5 dk
0xGently

Process Enumeration-1

Bu yazımızda CreateToolhelp32Snapshot fonksiyonunu kullanarak nasıl process’ler veya thread’ler hakkında bilgi toplarız onu anlatacağım. Geliştirdiğimiz araçlarda veya yazdığımız zararlılarda hedef aldığımız bir process’e müdahale etmek istiyorsak, öncelikle sistemde o process‘in nerede durduğunu tam olarak tespit etmemiz gerekiyor. Operasyonumuzu iki temel aşamaya böleceğiz. İlk olarak, elimizdeki düz bir metinden (örneğin notepad.exe gibi bir process isminden) yola çıkarak sistemdeki tüm process’leri tarayacak ve hedefimizin benzersiz kimlik numarasını, yani PID‘sini çekeceğiz. İkinci aşamada ise elde ettiğimiz bu PID üzerinden hedef process‘in içerisine girip, üzerinde manipülasyon yapabileceğimiz ya da ele geçirebileceğimiz geçerli bir thread yakalayacağız. ...

17 Ekim 2026
4 dk
0xGently

Thread Hijacking

Remote_Thread_Creation Bu yazımızda; meşru bir procesesi askıya alıp, bellek alanına shellcode enjekte ettikten sonra mevcut thread’in RIP/EIP registerlarını manipüle ederek çalışan bir teknikten bahsedeceğim. Siber güvenlik dünyasında, hedef bir proses içerisinde kod çalıştırmak için genellikle CreateRemoteThread gibi API’ler tercih edilir. Ancak bu fonksiyonlar güvenlik mekanizmaları (AV/EDR) tarafından çok sıkı izlenir ve anında engellenir. Thread Hijacking ise sıfırdan yeni ve şüpheli bir thread oluşturmak yerine, halihazırda var olan meşru bir thread’in rotasını “çalmayı” hedefler. ...

9 Ekim 2026
7 dk
0xGently

Process Enumeration-3

Process Enumeration Hedefin PID Değerini Bulmak (NtQuerySystemInformation) Zararlı yazılım geliştirirken (malware dev), payload’umuzu bellekte saklamak veya Birçok Execute tekniklerini stabil bir şekilde çalıştırabilmek için genellikle sistemde zaten var olan meşru bir process’e (örneğin notepad.exe, explorer.exe veya svchost.exe) ihtiyaç duyarız. İşte tam bu noktada, sistemde o an aktif olan süreçleri listeleyip hedefimizin PID değerini koparmaya veya süreçler hakkında telemetry toplamaya genel olarak Process Enumeration diyoruz. Bir önceki yazımızda, Windows’un standart EnumProcesses API’sini kullanarak bu işlemi sıfırdan nasıl yapacağımıza adım adım bakmıştık. Ancak siber güvenlik dünyasında her zaman daha karmaşık daha öğrenilmesi zor yollar var… ...

5 Ekim 2026
6 dk
0xGently

RC4 Şifreleme

RC4 Şifrelemesi RC4, veriyi bloklar halinde değil, bayt bayt şifreleyen simetrik bir akış şifrelemesi (stream cipher) algoritmasıdır. Arka planda iki temel aşamadan oluşur: Anahtarın bellekte karıştırıldığı KSA (Key-Scheduling Algorithm) ve şifrelenecek verinin üzerine yazılacak rastgele baytların üretildiği PRGA (Pseudo-Random Generation Algorithm). Simetrik yapısı sayesinde aynı fonksiyon hem şifreleme hem de deşifreleme için kullanılır. Zararlı yazılım geliştirmede RC4’ü koda entegre etmek için temelde 3 yöntem kullanılır: SystemFunction032: Advapi32.dll içerisinde bulunan, Windows tarafından belgelenmemiş (undocumented) RC4 API’sidir. ...

20 Nisan 2026
5 dk
0xGently

XOR Şifreleme

XOR Şifrelemesi Malware geliştirme dünyasında, yazdığınız zararlı yazılımın ömrünü belirleyen en kritik faktörlerden biri payload’unuzu ne kadar iyi gizleyebildiğinizdir. Eğer bir shellcode’u veya PE dosyasını belleğe açık (plain-text) bir şekilde gömerseniz, statik analiz araçları ve Antivirüs (AV) imzaları saniyeler içinde sizi yakalayacaktır. İşte tam bu noktada Payload Encryption devreye girer. Bu yazımızda, zararlı yazılım dünyasının en temel ama en çok modifiye edilen şifreleme mantıklarından birini, XOR algoritmasını inceleyeceğiz. İşi temelden alıp kompleks (Rolling/Position-Dependent) yapılara doğru evrilteceğiz. ...

15 Nisan 2026
5 dk
0xGently

IPv4/IPv6 DeObfuscation

IPv4/v6 DeObfuscation Bu yazıda, dışarıdan bakıldığında son derece sıradan görünen bir ağ yapılandırma fonksiyonunun, nasıl bir shellcode decoder’a dönüştürüldüğünü inceleyeceğiz. Amacımız, saldıran tarafın zihniyetini anlayarak savunma sistemlerimizi bu tür “normal görünen anormallikleri” yakalayacak şekilde kurgulamak. Not: Bu metinde anlattığım kodun tamamını malware-development-library adresinde bulabilirsiniz. Ayrıca bu konunun mantığını oturtup kodun tam halini incelediğinizde diğer tekniklere uygulanan DeObfuscation işlemlerinide oluşturabilirsiniz. Zaten hemen hemen aynı ya sadece birkaç değişiklik yapmanız gerekmektedir o kadar. ...

10 Nisan 2026
4 dk
0xGently

Chacha20 Şifreleme

ChaCha20 Şifrelemesi Bu metinde Chacha20 den bahsedeceğim. Dosya boyutu ve basitlik her şeydir. ChaCha20’yi tercih etmemizin tek sebebi var: Küçük, hızlı ve ekstradan deşifre bloğu yazmanıza gerek bırakmıyor. Peki neden ChaCha20’yi seçiyoruz? Çünkü inanılmaz derecede hızlıdır, işlemcinin özel şifreleme donanımlarına (AES-NI gibi) ihtiyaç duymaz ve C/C++ ile sıfırdan yazması (implementasyonu) çok daha zahmetsizdir. Ayrıca, şifreleme ve deşifreleme (encrypt/decrypt) işlemleri için birebir aynı kodu kullanırız, bu da yazdığımız zararlı yazılımın boyutunu (stub size) küçültür. ...

1 Nisan 2026
4 dk
0xGently
gusto-stuck-cavity@duck.com