Welcome, Visitor!

Hello, we are really happy that you have reached us. However, since you are viewing the forum as a visitor, you cannot benefit from many features of the forum. How about taking advantage of all the features exclusive to our members by registering? You can register right now, taking just 2 minutes of your time. We would love to see you among us.

C++ Programlama dili ile oyunlarda hile kodlamak

Ü

Üye silindi 25

Thread Starter
Selam realitycheats ailesi nasılsınız umarım keyifler yerindedir bu konum tam size göre bir konu efsane bir konu konuma yorum ve like atmayı unutmayın arkadaşlar yorum ve likeleriniz bana fayda değil sitenin seo googlede öne çıkmasını sağlar :D geçelim konuya

YdODla.png


İlkten hack yapmak için bizim dll oluşturmamız lazım, bu dll bizim hilemiz olacak, oyuna enjekte edilecek ve
böylelikle bizim kodumuz oyunun bir parçası olacak. Bu harika bir şey çünkü biz adreslere direk erişebileceğiz
ve ReadProcessMemory yada WriteProcessMemory gibi fonksiyonlara ihtiyacımız kalmayacak.Şimdi dll giriş noktasını
oluşturmamız lazım

Code:
#include <windows.h>
#include <iostream>
**** mainHack(); //prototypedir main fonk. altında esas fonk. tanımlayabiliriz

BOOL WINAPI DllMain(HMODULE hModule, DWORD dwReason, LP**** lpReserved)
{
    if (dwReason == DLL_PROCESS_ATTACH) {
        DisableThreadLibraryCalls(hModule);
        CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)mainHack, NULL, NULL, NULL);    //yeni bir thread oluşturur ve mainHack fonksiyonunu başlatır
    }
    else if (dwReason == DLL_PROCESS_DETACH) {

    }
    return TRUE;
}

**** mainHack()
{

}

Enjekte edildikten sonra, DllMain'deki parametreler doldurulur ve başarıyla enjekte edilirse dwReason, DLL_PROCESS_ATTACH değerini döndürür.
Kodumuzun tümü şimdilik mainHack () içinde olacak ve DllMain'e () hiçbir şey eklenmeyecek. Yeni bir iş parçacığı oluşturmak ve kodunuzu yeni iş parçacığında çalıştırmak istiyoruz. Kodunuzu DllMain'in içine koymayın çünkü burada yeni bir iş parçacığı oluşturulur. Şimdi hackMain () içine yararlı olabilecek bazı çok temel şeyler ekleyeceğiz.

Code:
AllocConsole();                        //Console ekranı açar
freopen("CONOUT$", "w", stdout);    //std::cout kullanmamız için yetki verir
std::cout << "We Can Use Console For Debugging!\n"; //yazdırmak istediğimiz şeyi böyle yazdırabiliriz.

Bu üç satırlık kod hangi programa eklediyseniz ona dahil edilir, ayrıca bu konsol değişken değerlerini görebilmek için çok kullanışlı olur.


Pointerlar
bir pointer oluşturmak için
int *a;
gibi bir tanım yapmamız lazımdı. Bu neyi tutuyodu "herhangi bir adresi"
eğer biz bunu
"std::cout<<*a"
konsolda yazdırmak istersek "*a" yaptığımız için, "a" zaten herhangi bir adresi tutuyordu, başına tekrar "*"koyduğumuz için ise bu "a" nın içindeki değeri verir.
örnek olarak aşağıdaki resmi inceleyin;


https://mh.org/attachments/ram-png.15955


Code:
int x = 10;    //x isimli bir değişken oluşturur ve içine 10 atar
int* pX;    //integer bir pointer oluşturur
pX = &x;    //pX pointerına x değişkeninin adresini atar.

std::cout << *pX;    //pX adresinin referans ettiği ram kümesinin içindeki değeri gösterir.
Şimdi bu bilgileri kullanarak StaticAddress imizi işleyelim;

Şimdi bu bilgileri kullanarak StaticAddress imizi işleyelim;
static adresimiz 0x50F4F4; id bu bir adrestir bunu kullanmak için bize işte şimdi bir pointer değişkeni lazım, genelde hile yaparken bu tür değişkenler için DWORD data type ı kullanılır,

Code:
DWORD * base = (DWORD*)0x50F4F4;

Burda ne yaptık = base pointeri oluşturduk ve "(DWORD*)0x50F4F4" ilede "0x50F4F" adresinin başına "(DWORD*)" koyarak bir adres olduğunu belirttik;
eğer bu noktada std::cout base yazdırırsak bize 0x50F4F4 gösterecektir.

Code:
DWORD base = *(DWORD*)0x50F4F4;
std::cout << base;

Code:
DWORD * base = (DWORD*)0x50F4F4;
std::cout << *base;

bu ikisi arasındaki farkı anlarsanız bu iş çözülür.
smile.gif


bukadar açıklamadan sonra mainHack() ' in son görünümü şöyle olması lazım;

Code:
**** mainHack()
{
    AllocConsole();
    freopen("CONOUT$", "w", stdout);
    std::cout << "We Can Use Console For Debugging!\n";
    DWORD base = *(DWORD*)0x50F4F4;
    std::cout << base;
}

Buradan sonra işin içine ofsetlerimiz dahil oluyor. Tekrar söylüyorum "*a" bize o adresin içindeki değeri veriyodu değil mi ozaman şu tanım "*(DWORD*)0x50F4F4" bize "50F4F4" adresini içindeki değeri verecek eğer dersleri sıkı takip ediyorsanız burayı anlamanız lazım ve o tanım bize "Local Player Adresi"mizi verecek olduğunu da tahmin edersiniz.
Assault Cube de can ofsetimiz "0xF8" idi hatırlarsanız.

Code:
DWORD * can = (base+0xF8)

yukarıdaki kod "CAN" adresni tutan bir pointer oluşturdu. Ve biz buna yeni bir atamak yapmak istersek de şöyle yapıcağız;
Code:
*can = 150;

Gibi bir satır yazarsak bunun anlamı şudur: "*can" -> can adresi içindeki değeri "= 150;" yap demektir aslında bu satır.
Buraya kadar aslında bir "Internal Trainer" hazırlamış olduk. Bu dll yi build edip herhangi bir enjektör ile oyuna enjekte edip sonuca bakabilirsiniz.










 
M

Murat

Confirmed Memb.
Joined
Jul 31, 2019
Messages
101
Reaction score
18
Points
18
Legendary!!
 
Ü

Üye silindi 25

Thread Starter
Devamı Gelicektir...

Oyunun güvenlik duvarı var ise injecte edemessiniz battleye xincode gibi anti güvenlik sistemlerine bypass projelerimde mevcuttur türk toplumunu bu konuda geliştiriceğim reality cheats le kalın dostlar
 
U

Umut

Confirmed Memb.
Joined
Aug 5, 2019
Messages
1
Reaction score
0
Points
1
reis pointer nasıl bulucaz ve bide pointeri açıklarmısın
 
SPAM IS FORBIDDEN!
  • SPAMMERS ARE BANNED FROM THE FORUM AND CANNOT USE ANY OF THE CHEATS
  • For example: thanks, thx, very good, asdqwe, working, ty and so on!
  • For example: Writing the same message over and over. thanks, thx and so on!
  • Copying and copying someone else's message is prohibited.
  • It is forbidden to send messages to increase the number of comments on threads that you have no knowledge of.
  • Write your own opinion when commenting!
  • If you see spam message, please let us know with the REPORT button!

Theme editor

Top Bottom