✨Windows API Hooking | Windows'u ele geçirmek. #1

Hichigo

Uzman üye
30 Ağu 2015
1,190
42
github.com/tarik0
giphy.gif



x1BBWJ.png



Function Hooking


Function hooking bir programın kod akışını kendi yazdığımız kod ile değiştirmemizi sağlar.


Örnek verirsek:


aGZcWq.png

Topla isimli bir fonksiyonumuz olsun ve bu fonksiyon verilen iki sayıyı (x, y) toplasın. Ancak biz bu iki sayının çıkarılmasını istiyoruz. Bu sebeple bu fonksiyonu ele geçirmemiz ve bu fonksiyon yerine kendi yazdığımız fonksiyonu çalıştırmamız gerek.


sLqXBP.png

Üstteki fonksiyon ise bizim asıl fonksiyon yerine koymak istediğimiz fonksiyon. Fonksiyon verilen değerleri toplamak yerine çıkarıyor.


ve bizim HookFunction isimli bir fonksiyonumuz var. Bu fonksiyon verilen adresteki fonksiyonu bizim kendi fonksiyonumuzla değiştiriyor.


EZerbw.png

Ve fonksiyonu çağırdığımız zaman artık bizim fonksiyonumuz normal fonksiyonun üzerine yazılıyor ve kod akışı bizim fonksiyonumuzdan devam ediyor. Veriler toplanmak yerine çıkarılıyor.


Umarım verdiğim örneği anlamışsınızdır.


Bir çok function hooking yöntemi vardır.


Örn. VMT Hooking, IAT/EAT Hooking, Byte Patching vs.

x1BBWJ.png



Windows API

Windows API, Microsoft tarafından çoğunlukla C ile yazılan ve programların Windows'a bir şey yaptırmak istediklerinde kullandıkları veri ve fonksiyon setidir.


Örnek veriyorum bir program bir dosyaya yazı yazarken, okurken veya kayıt ederken Windows API kullanmalıdır.


Bizler ise bu API fonksiyonları üstte anlattığım yöntem ile ele geçirip kendi irademize göre kullanabiliriz. Örnek veriyorum dosya silme fonksiyonunu ele geçirip dosyaların silinmesini engelleyebiliriz veya görev yöneticisinde bir programı gösteren fonksiyonu ele geçirip programı görev yöneticisinden saklayabiliriz.


Ünlü virüsler sizin bilgisayarınızı ele geçirmek için bazen de biraz ürkütücü olmak için bu yöntemleri kullanabilir.


hxrkno.png



x1BBWJ.png



DLL Dosyası Oluşturma


Öncelikle Visual Studio'da bir C++ projesi açalım. (Boş Proje)



peNjNb.png



Ardından projemize sağ tıklayıp özelliklere geliyoruz.


0pcvJa.png



Ardından Yapılandırma Türünü Dinamik Kütüphane (.dll)'ye çeviriyoruz. Ardından uygulayıp kapatıyoruz.


z3Aw7a.png



Ardından kaynak dosyalarına programızın entry pointinin bulunacağı bir dllmain.cpp dosyası açıyoruz


gBBuR2.png



Artık kodlamaya başlayabiliriz. Klasik DLL Entrypointimizi yazıyoruz. Ben direk buradaki entrypoint'i kopyalayıp yapıştırdım.



TtiAsQ.png

Artık kodlamaya hazırız. Sonraki ders asıl kodlamaya geçeceğiz.
post_thanks.gif
butonuna basmayı unutmayın!



İyi Forumlar!


x1BBWJ.png
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.