C++ DirectX Game Hacking

NumL0ck

Üye
30 Ocak 2013
211
1
Hepinize hello arkadaşlar, bugün size DirectX gaming hack anlatacağım.
Size hazır kod vereceğim ve bunun yanında anlatımlarınıda yapacağım.

Şimdi bakın ilk olarak gerekli sdk ları eklememiz gerekli, bu sdklar directx9 2004 summer sdk ve Detour 1.5 sdksıdır
Konuya ekleyeceğim.

(SDK eklemeyi bilmeyen varsa kodlamaya başlamasın. ilk önce vs.net kullanımını öğrenin o zaman.)
DirectX SDK ;
BURADAN
Virus Total ;
BURADAN


Şimdi bakın ilk olarak hilemizden ziyade menümüzde çok önemli menümüzün görünümü, verdiği performans çok çok önemli yani siz çok fena bi hack yaparsınız ama menünüz 20 fps verir kasma yapar sonuç = hüsran.

Görünümü sonra anlatacağım ilk olarak hook'umuzu main kodlarımızı bir ekleyelim.
Kod:
BOOL __stdcall DllMain(HINSTANCE hDll, DWORD Snc, LP**** Lpc) // Bu bizim main kodumuz
{
	DisableThreadLibraryCalls(hDll); // Tüm kütüphane çağrılarını kapatıyoruz
	switch (Snc) // Switch yerine if de yapılabilir ama x64 tabanlıda olması için switch kullanılmalı
	{
	case DLL_PROCESS_ATTACH: // Burda Snc == DLL_PROCESS_ATTACH olduğunda yani DLL miz işleme bağlandığında yapılacak şeyleri belirtiyor.
		CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HOOK, NULL, NULL, NULL); // Hook Fonksiyonumuzu yeni bir thread adı altında ekliyoruz.
		break;
	}
	return TRUE;
}

HOOK'umuz (Her oyunda çalışmayabilir, oyunlar genelde hookları fixler farklı bir konu altında farklı hookları paylaşacağım.)


Şimdi Hook nedir ? ; Hook adı üstünde kancadır peki ne kancası ? bizim .dll mizle oyun arasındaki DirectX bağlantısını yapan kancadır

Hook'umuz şöyle;

Kod:
int HOOK(****)
{
	DWORD * sTablo; // vTable'a göre yapıyorum mid function vs türleri var ama bana göre en iyisi bu.
	DWORD mD3D = 0; // ModuleHandleA değişkenimiz.
	do{
		mD3D = (DWORD)GetModuleHandleA("d3d9.dll"); // Oyunun ana d3d9.dll sini değişkenimize çekiyoruz
		Sleep(10);
	} while (!mD3D);
	DWORD adr = FindPattern(mD3D, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx"); // D3d9.dll de bulunan ve d3d9 a güncelleme gelmediği için sabit kalan patternimiz ile hook'umuzu atacağımız yeri belirliyoruz.
	if (adr)
	{
		memcpy(&sTablo, (*****)(adr + 2), 4); // sTablo'yu Adr+2 , size 4 olarak oraya yerleştiriyoruz.
	//	pReset = (Reset)DetourCreate((PBYTE)sTablo[RESET], (PBYTE)mReset, 5);
		pEndScene = (EndScene)DetourCreate((PBYTE)sTablo[ENDSCENE], (PBYTE)mEndScene, 5); // EndScene derken bir kare bittiğinde olacak şeyleri kastediyor.
	//	pDip = (Dip)DetourCreate((PBYTE)sTablo[DIP], (PBYTE)mDip, 5); // Ana Texture işlemlerinin yapılacağı yer.
	}
	return 0;
}

Herşey tamam ve stabil.
Şimdi bu hookta çağırdığımız mEndScene'yi tanımlamamız gerekiyor.

oluşturduğumuz .cpp nin en başına

Kod:
typedef HRESULT (__stdcall * EndScene)(LPDIRECT3DDEVICE9 Aygıt);
EndScene pEndScene = NULL;

Daha sonra onun bir altına şunları yapıştırıyoruz

Kod:
HRESULT __stdcall mEndScene(LPDIRECT3DDEVICE9 Aygıt)
{

// Ana menümüzü çizdireceğimiz yer burasıdır.

return pEndScene(Aygıt);
}

Şimdii kök oluştu yaptık herşeyi güzelce hooklanırsa çalışacaktır, ama şuanlık menü felan çizmiyor ne yapacağız ?
Burdan sonrası size vereceğim fonksiyonları kullanarak göz zevkinize kalmış.

Kod:
**** Kutu(int x, int y, int w, int h, DWORD Renk, LPDIRECT3DDEVICE9 Aygıt)
{
   D3DRECT rect = {x,y,x+w,y+h}; // DirectX Rectangle yani directx kare değişkenimizi fonksiyonumuza göre ayarlayıp kodda x,y,width, height verimizi tutan bir değişken yapıyoruz.
   Aygıt->Clear( 1, &rect , D3DCLEAR_TARGET, Renk, 0, 0 ); // Renk'imize göre seçtiğimiz alanda bir kare oluşturacak.
}

Yukarda attığım fonksiyonun kullanımı ise şöyledir.

Kod:
Kutu(5,5,200,200, D3DCOLOR_ARGB(0 /*ALPHA*/, 255/*RED*/, 0 /*GREEN*/, 0 /*BLUE*/, Aygıt);
// DirectX ekranında 5, 5 de yani ekranın sol üstü oluyor 200 genişlik ve 200 uzunluk'ta kırmızı bir kutu oluştur.

Eğer yaratıcılığınızı konuşturup menünüzü çizip componentlerinizi ayarlarsanız başarıyla hooklanıp çalışacaktır, menüyü kontrol ettirme felan sizin kodlama becerinize kalmış

ErNmdv.png


Edit : sansürlenen yerler "vo id" 'in birleşmiş halidir gereksiz sansür atılıyor.

İyi Günler ^,^
 
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.