Radar Hack Yapımı | Game Hack Academy

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Isse Kun
Emektar Üye
Katılım
15 May 2017
Mesajlar
4,801
Çözümler
5
Tepki puanı
2,106
Ödüller
15
Sosyal
9 HİZMET YILI
Hedef: Bu laboratuvar için hedefimiz Assault Cube 1.2.0.2 olacak.

Tanımlama: Bu laboratuvardaki amacımız, radarda hem düşmanları hem de dost oyuncuları görüntüleyen bir tür hack olan bir radar hack'i oluşturmaktır.

radar1.e689c3e4.png


Anlatım: Birçok FPS oyununda, mevcut haritanın küçültülmüş bir versiyonunun üstünde her oyuncu için bir simge görüntüleyecek bir radar bulunur. Takımlarla bir oyunda oynarken, bu radarlar yalnızca aktif oyuncuyla aynı takımdaki oyuncuları gösterecektir. Çoğu oyunun kodu, radarda bir oyuncunun simgesini çizerken, aşağıdaki bloğa benzer şekilde bu liste üzerinde yinelenir:

C++:
void draw_radar() {
    for(int i = 0; i < max_players; i++) {
        if(player_list[i]->team == current_player->team) {
            //draw on radar
        }
    }       
}

Bu kodu bulursak, takımdan bağımsız olarak oyuncuyu her zaman radara çekmek için if koşulunu değiştirebiliriz. Kodu bulmak için öncelikle oyuncu yapımızdaki takım üyesini tanımlamamız gerekecek. Ardından, bu üyeye kodda nerede erişildiğini belirlemek için erişimde bir kesme noktası ayarlayabiliriz.

Oyuncunun Takımını Bulma: Oyuncunun takımını oyuncu yapısında bulmak için iki yaklaşım kullanabiliriz:
  1. Hile Motoru'nu kullanın ve Bilinmeyen bir başlangıç değeri arayın. Ardından, takımlar arasında geçiş yapın ve Değiştirilen değeri arayın.​
  2. x64dbg kullanın ve oynatıcının yapısını bir dökümde bulun. Ardından, ekipler arasında geçiş yapın ve değişen bir üye arayın.​
Bu yaklaşımların her ikisini de geçmiş laboratuvarlarda ele aldık. Daha önce tartışılan teknikleri kullanarak, ekibinize bağlı olarak 0 ile 1 arasında değişen bir üyeyi tanımlayabilmeniz gerekir. Bu üye, oyuncunun hayatta olup olmadığını tutan daha önce belirlediğimiz üyeye nispeten yakındır.

Radar İşlevini Bulun: Radar fonksiyonunun oyuncunun takımına erişmesi gerektiğini biliyoruz. Bu nedenle, az önce tanımladığımız ekip üyesine erişim için bir kesme noktası yerleştirebiliriz. Hemen, kesme noktası açılmalıdır. Ancak, yürütmeye birkaç kez devam ederseniz, kesme noktasının kodun tamamen farklı bölümlerinde açıldığını görmeniz gerekir. Bunun nedeni büyük olasılıkla kodun birkaç bölümünün bu üyeye erişmesidir. Bir sonraki adımımız, radarın çizilmesinden sorumlu kod bölümünü belirlemektir.

Yukarıda açıkladığımız sahte koda dayanarak, aradığımız kod hakkında birkaç şey varsayabiliriz:​
  1. Bir cmp (veya test) talimatı ve ardından koşullu bir sıçrama (je, jne, jg, vb.)​
  2. İlgili birçok işlem nedeniyle ya bir işlevi çağıracak ya da adil miktarda koda sahip olacaktır.​
  3. Büyük olasılıkla simgeyi radara yerleştirmek için kayan nokta işlemlerinden (fld, fstp) yararlanacaktır.​
Bu özellikleri, kodda hangi konuma önem verdiğimizi belirlememize yardımcı olması için kullanabiliriz.

Program yürütmeyi kesintiye uğrattığımız için, kesme noktaları tutarlı bir şekilde ortaya çıkmaz. Bu laboratuvarda, her bir kod parçasını laboratuvarı yazarken karşılaştıkları sırayla inceleyeceğiz. Ortamınızda, popların sırası büyük olasılıkla farklı olacaktır.

İlk pop aşağıdaki kodda oluşur:

radar2.cb897e72.png


Bu başlangıçta önemsediğimiz koşulların birkaçını kontrol ediyor gibi görünüyor. Ancak, jne talimatını 'de nop edersek, oyunda bir değişiklik olmadığını fark ederiz. Çağrıyı şu adreste keşfederseniz, aşağıdaki kodu görmeniz gerekir: 0x4153220x415326

radar3.bf412dd3.png


Bu dize sabitinden, bu kodun radardaki sesli sohbet (veya iletişim) sembollerini çizmekle bir ilgisi olduğunu varsayabiliriz. Şimdi bir sonraki konuma geçeceğiz:

radar4.d2a64e57.png


Hemen tersine çevirme amacımız için, bir kaydı kendisine karşı test etmek, kaydı 0 ile karşılaştırmakla aynıdır. Burada, oyuncunun takımı 0 veya CLA takımı olarak ayarlanmışsa kodun bir dal yürüttüğünü görüyoruz. Radar çizim işlemi, statik bir değere göre değil, oyuncunun yapısında saklanan değere göre yürütülmelidir. Şimdi bir sonraki konuma geçebiliriz:

radar5.d0dfa16e.png


Bu kodu incelediğimizde bir önceki koda benzer bir işlem yaptığını görüyoruz. Oyuncunun takımının değerini ecx'e yükledikten sonra, kod bu değeri 1 ile veya RSVF takımını test cl, 1 talimatıyla karşılaştırır. Aynı mantık, yukarıdaki paragrafta olduğu gibi burada da geçerlidir, bu yüzden bir sonraki konumu inceleyelim:

radar6.8a544ae0.png


En üstteki cmp talimatı, mevcut oyuncumuzun takımını, aynı takım ofsetini başka bir veri yapısından, potansiyel olarak başka bir oyuncudan yüklüyor gibi görünen eax ile karşılaştırır. Ayrıca, simgenin radara yerleştirilmesinden sorumlu olabilecek birkaç kayan nokta işlemi de görüyoruz. Bakalım jne talimatını çıkarırsak ne olacak:

radar7.e8c892ca.png


Assault Cube'a geri dönerseniz, artık ekibinizde olmayanlar da dahil olmak üzere radardaki her oyuncuyu görebildiğinizi fark etmelisiniz. Sorumlu radar kodumuzu bulduk.

Kodu Değiştirme: Bu hack yalnızca bir bellek adresine bayt yazmamızı gerektirmektedir.

C++:
#include <Windows.h>

unsigned char new_bytes[5] = { 0x90, 0x90, 0x90, 0x90, 0x90 };

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    DWORD old_protect;
    unsigned char* hook_location = (unsigned char*)0x409FB3;

    if (fdwReason == DLL_PROCESS_ATTACH) {
        VirtualProtect((void*)hook_location, 5, PAGE_EXECUTE_READWRITE, &old_protect);
        for (int i = 0; i < sizeof(new_bytes); i++) {
            *(hook_location + i) = new_bytes[i];
        }
    }

    return true;
}
 
Üye
Katılım
1 Ocak 2021
Mesajlar
7
Tepki puanı
0
Ödüller
4
Yaş
24
5 HİZMET YILI
kral adamsın en kısa sürede denicem
 
☆☆Her oyun bir gün hileyi tadacaktır☆☆
Griffin Premium
Katılım
12 Kas 2017
Mesajlar
13,726
Çözümler
240
Tepki puanı
5,132
Ödüller
23
8 HİZMET YILI
Eline koluna sağlık dostum çok güzel detaylı bir anlatım olmuş 👍🤌
 
Admin
Katılım
9 Eki 2017
Mesajlar
13,539
Çözümler
1,050
Tepki puanı
3,382
Ödüller
22
8 HİZMET YILI
Bu adam işin içindeyse olay aynen değişir :winkwink:
 
Süper Üye
Katılım
1 Şub 2019
Mesajlar
801
Çözümler
6
Tepki puanı
142
Ödüller
9
Sosyal
7 HİZMET YILI
Yine güzel bir detaylı anlatım olmuş, eline sağlık İsmail.
 
Seçkin Üye
Katılım
2 Eyl 2018
Mesajlar
349
Çözümler
1
Tepki puanı
30
Ödüller
6
7 HİZMET YILI
Elinize Sağlık Tatlı Bir Rehber Olmuş
 
Seçkin Üye
Katılım
12 Ocak 2019
Mesajlar
303
Tepki puanı
32
Ödüller
8
Yaş
26
7 HİZMET YILI
Hedef: Bu laboratuvar için hedefimiz Assault Cube 1.2.0.2 olacak.

Tanımlama: Bu laboratuvardaki amacımız, radarda hem düşmanları hem de dost oyuncuları görüntüleyen bir tür hack olan bir radar hack'i oluşturmaktır.

Ekli dosyayı görüntüle 87252

Anlatım: Birçok FPS oyununda, mevcut haritanın küçültülmüş bir versiyonunun üstünde her oyuncu için bir simge görüntüleyecek bir radar bulunur. Takımlarla bir oyunda oynarken, bu radarlar yalnızca aktif oyuncuyla aynı takımdaki oyuncuları gösterecektir. Çoğu oyunun kodu, radarda bir oyuncunun simgesini çizerken, aşağıdaki bloğa benzer şekilde bu liste üzerinde yinelenir:

C++:
void draw_radar() {
    for(int i = 0; i < max_players; i++) {
        if(player_list[i]->team == current_player->team) {
            //draw on radar
        }
    }      
}

Bu kodu bulursak, takımdan bağımsız olarak oyuncuyu her zaman radara çekmek için if koşulunu değiştirebiliriz. Kodu bulmak için öncelikle oyuncu yapımızdaki takım üyesini tanımlamamız gerekecek. Ardından, bu üyeye kodda nerede erişildiğini belirlemek için erişimde bir kesme noktası ayarlayabiliriz.

Oyuncunun Takımını Bulma: Oyuncunun takımını oyuncu yapısında bulmak için iki yaklaşım kullanabiliriz:
  1. Hile Motoru'nu kullanın ve Bilinmeyen bir başlangıç değeri arayın. Ardından, takımlar arasında geçiş yapın ve Değiştirilen değeri arayın.​
  2. x64dbg kullanın ve oynatıcının yapısını bir dökümde bulun. Ardından, ekipler arasında geçiş yapın ve değişen bir üye arayın.​
Bu yaklaşımların her ikisini de geçmiş laboratuvarlarda ele aldık. Daha önce tartışılan teknikleri kullanarak, ekibinize bağlı olarak 0 ile 1 arasında değişen bir üyeyi tanımlayabilmeniz gerekir. Bu üye, oyuncunun hayatta olup olmadığını tutan daha önce belirlediğimiz üyeye nispeten yakındır.

Radar İşlevini Bulun: Radar fonksiyonunun oyuncunun takımına erişmesi gerektiğini biliyoruz. Bu nedenle, az önce tanımladığımız ekip üyesine erişim için bir kesme noktası yerleştirebiliriz. Hemen, kesme noktası açılmalıdır. Ancak, yürütmeye birkaç kez devam ederseniz, kesme noktasının kodun tamamen farklı bölümlerinde açıldığını görmeniz gerekir. Bunun nedeni büyük olasılıkla kodun birkaç bölümünün bu üyeye erişmesidir. Bir sonraki adımımız, radarın çizilmesinden sorumlu kod bölümünü belirlemektir.

Yukarıda açıkladığımız sahte koda dayanarak, aradığımız kod hakkında birkaç şey varsayabiliriz:​
  1. Bir cmp (veya test) talimatı ve ardından koşullu bir sıçrama (je, jne, jg, vb.)​
  2. İlgili birçok işlem nedeniyle ya bir işlevi çağıracak ya da adil miktarda koda sahip olacaktır.​
  3. Büyük olasılıkla simgeyi radara yerleştirmek için kayan nokta işlemlerinden (fld, fstp) yararlanacaktır.​
Bu özellikleri, kodda hangi konuma önem verdiğimizi belirlememize yardımcı olması için kullanabiliriz.

Program yürütmeyi kesintiye uğrattığımız için, kesme noktaları tutarlı bir şekilde ortaya çıkmaz. Bu laboratuvarda, her bir kod parçasını laboratuvarı yazarken karşılaştıkları sırayla inceleyeceğiz. Ortamınızda, popların sırası büyük olasılıkla farklı olacaktır.

İlk pop aşağıdaki kodda oluşur:

Ekli dosyayı görüntüle 87253

Bu başlangıçta önemsediğimiz koşulların birkaçını kontrol ediyor gibi görünüyor. Ancak, jne talimatını 'de nop edersek, oyunda bir değişiklik olmadığını fark ederiz. Çağrıyı şu adreste keşfederseniz, aşağıdaki kodu görmeniz gerekir: 0x4153220x415326

Ekli dosyayı görüntüle 87254

Bu dize sabitinden, bu kodun radardaki sesli sohbet (veya iletişim) sembollerini çizmekle bir ilgisi olduğunu varsayabiliriz. Şimdi bir sonraki konuma geçeceğiz:

Ekli dosyayı görüntüle 87255

Hemen tersine çevirme amacımız için, bir kaydı kendisine karşı test etmek, kaydı 0 ile karşılaştırmakla aynıdır. Burada, oyuncunun takımı 0 veya CLA takımı olarak ayarlanmışsa kodun bir dal yürüttüğünü görüyoruz. Radar çizim işlemi, statik bir değere göre değil, oyuncunun yapısında saklanan değere göre yürütülmelidir. Şimdi bir sonraki konuma geçebiliriz:

Ekli dosyayı görüntüle 87256

Bu kodu incelediğimizde bir önceki koda benzer bir işlem yaptığını görüyoruz. Oyuncunun takımının değerini ecx'e yükledikten sonra, kod bu değeri 1 ile veya RSVF takımını test cl, 1 talimatıyla karşılaştırır. Aynı mantık, yukarıdaki paragrafta olduğu gibi burada da geçerlidir, bu yüzden bir sonraki konumu inceleyelim:

Ekli dosyayı görüntüle 87257

En üstteki cmp talimatı, mevcut oyuncumuzun takımını, aynı takım ofsetini başka bir veri yapısından, potansiyel olarak başka bir oyuncudan yüklüyor gibi görünen eax ile karşılaştırır. Ayrıca, simgenin radara yerleştirilmesinden sorumlu olabilecek birkaç kayan nokta işlemi de görüyoruz. Bakalım jne talimatını çıkarırsak ne olacak:

Ekli dosyayı görüntüle 87259

Assault Cube'a geri dönerseniz, artık ekibinizde olmayanlar da dahil olmak üzere radardaki her oyuncuyu görebildiğinizi fark etmelisiniz. Sorumlu radar kodumuzu bulduk.

Kodu Değiştirme: Bu hack yalnızca bir bellek adresine bayt yazmamızı gerektirmektedir.

C++:
#include <Windows.h>

unsigned char new_bytes[5] = { 0x90, 0x90, 0x90, 0x90, 0x90 };

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
    DWORD old_protect;
    unsigned char* hook_location = (unsigned char*)0x409FB3;

    if (fdwReason == DLL_PROCESS_ATTACH) {
        VirtualProtect((void*)hook_location, 5, PAGE_EXECUTE_READWRITE, &old_protect);
        for (int i = 0; i < sizeof(new_bytes); i++) {
            *(hook_location + i) = new_bytes[i];
        }
    }

    return true;
}
Çok basit anlatmışsın en kısa sürede deneyeceğim
 
aka hernos
Süper Üye
Katılım
30 Ağu 2019
Mesajlar
628
Çözümler
10
Tepki puanı
297
Ödüller
4
Yaş
29
Sosyal
6 HİZMET YILI
Çok güzel bir anlatım olmuş eline sağlık dostum.Fakat yazıda cümlelerde anlatım bozuklukları var,sanırım onlarıda ingilizceden çevirdiğin için öyle ama olsun.Yeni başlayan arkadaşlara yararlı olucaktır.
 
Donator
Katılım
19 Mar 2020
Mesajlar
1,506
Çözümler
1
Tepki puanı
69
Ödüller
6
6 HİZMET YILI
Daha önce tartışılan teknikleri kullanarak
 
Onaylı Üye
Katılım
14 Şub 2022
Mesajlar
52
Tepki puanı
2
Ödüller
1
Yaş
21
4 HİZMET YILI
Detaylı olmuş ama resim olarak biraz daha zengin bişeyler ekleybirlsn
 
lol sikript yüsır
Uzman Üye
Katılım
17 Nis 2023
Mesajlar
185
Tepki puanı
22
Ödüller
2
Yaş
26
3 HİZMET YILI
Bilgilendirici ve Detaylı Anlatım.
 
Onaylı Üye
Katılım
10 Mar 2019
Mesajlar
55
Tepki puanı
4
Ödüller
4
Yaş
27
7 HİZMET YILI
Eline sağlık deneyecegim yakın zamanda
 
Seçkin Üye
Katılım
2 Mar 2023
Mesajlar
310
Çözümler
6
Tepki puanı
19
Ödüller
3
Yaş
29
3 HİZMET YILI
Eline sağlık oyunun ismini öğrenebilir miyim acaba?
 
tuxedotuxedotuxedotuxedotuxedotuxedotuxedotuxedotu
Banlı Üye
Katılım
24 Ara 2021
Mesajlar
501
Tepki puanı
23
Ödüller
2
Yaş
26
4 HİZMET YILI
ban yeme riski var mıdır
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst