Öncelikle bu konunun size referans olmasını istiyorum anlattığım ve kullandığım bir çok şeyin nasıl çalıştığını anlamak veya öğrenmek isterseniz kodları chatgptye sorarak yapabilirsiniz,NOT:Bu bir 0 dan bir kodlama değildir temeli olan arkadaşlar içinidir temeli atmak isteyen arkadaşlar Hacker Dio abimizden öğrenebilirler. EĞER bu nasıl şu nasıl diye sorarsanız yerleri bulamazsanız öncelikle yazıları ve görselleri tekrar tekrar inceleyin detaylı bakın okumadan yapmayın. Ve konumu kilit yapan admin arkadaşa gelirsek benim prim veya hit kasma gibi bir ihtiyacım yok konuyu açarak siteye veriyorum primi
Cheat Engine ile pointer bulucaz pointerler bize kullanmak istediğimiz yanni can değerini tutan verileri işaret eden işaretcilerdir offsetler ise bu işaretçileriin altında duran sabit can, zırh, mermi,isim vb değerlerdir bunları göreceğiz zaten hadi oyunumuzu açalım ben assault cubenin en güncel oyununu açıcam sizde istediğiniz versiyonunu açabilirsiniz. Neden assault cube derseniz oyun çok basic ve bizim ihtiyacımızı karşılıycağını düşünüyorum.
Can Değerini Bulma
Ben 4 vs 4 açtım siz kafanıza göre açabilirsiniz. Cheat engineyi açıp oyunu seçelim.
Canımı arattım şimdi bir bomba atıp canımı düşürmem gerekki hangi değer dorğu bulalım.
Gördüğümüz gibi isteiğimiz veri geldi atalım şimdi aşşağıya bakalım işlemler asıl orda dönücek.
Burda find out what accesses this addresse basıp benim canıma kimler ne yazabiliyor onu görüyorum
Şimdi bir bomba atalım çünkü canımıza erişen işaretçilere bakmak isteriz adam da vurabilir ama bomba atarsak daha kontrollü olur.
Evet değerler geldi bakıyorum assembly dilinde bir işaretciye cmp gelmiş assembly bilenler bilir ama bizim onunla işimiz yok biz cmp dword ptr ye sadece bir kere tıklıyoruz
Burdaki esi değerimiz bizim işaretcimiz muhtemelen EC ise can offsetimiz ama bunu şu an bilmiyoruz deneyecez zaten kodda da bir karşılaştırma yapmış can 0 a eşit mi diye allah allah neden acaba :?, sözün özü biz esi değerimizi cheat enginede bir aratalım bakalım static(KALICI) bir işaretçi(POINTER) bulabilicek miyiz.
4 tane yeşil işaretci çıktı ac_client yazıyor bunlar sabit değerlerdir asla değişmezler yani büyük bir güncelleme gelene kadar tabiki. Ben 3. olanı seçicem
gösterdiğim yere çift tıkalrsanız karşımıza adress çıkacak.
"ac_client.exe + 18AC00" Değerimiz bizim entity adresimiz ve static bir adress kalıcı addres evet o hile kodlama videolarındaki localplayer dediğimiz şey tamda bu eğer bununla can, mermi,zırh, isim offsetlerini birleştirirsek tüm değerleri tek bir yerde toplayabiliriz umarım anlamışsınızdır anlamadığınız yerleri sorarsanız açıklarım. Konumuza Dönecek olursak hatırlıyor musunuz eski resimde "EC" diye offsetimiz vardı deneyelim bakalım bunu "ac_client.exe + 18AC00" ile birleştirirsek can değerimiz ortaya çıkacak mı ?
Kendimiz manuel bir addres oluşturucaz ki can değerlerimize vs bakabilelim
pointer sekmesini açıp içine offsetimizi yazarsak 100 değerini görmüş olucaz bu bizim işte can değerimiz ama kalıcı değerimiz.
içini değiştirdiğimizde 150 yapabildik evet şimdi eminiz hadi artık işlemlerimizi biraz daha kalabalıklaştıralım.
Sırasıyla -> Memory View (Ram Görünümü) -> Tools (araçlar) -> dissect data basarsak karşımıza listeleme gibi bir şey çıkacak şimdi bakalım
static entity içindeki valueyi kopyalayıp group 1 içine yazıp structers new structers dersek kısayol ctrl + n
playerent çıktı karşımıza adını entity yapıcam siz isteidğinizi yapın ne olur ne olmaz diye tr karakter felan kullanmayın bunu alışkanlık haline getirin.
Şimdi bu abidik kubidik şeyler ne diye sorucaksınız muhtemelen arkadaşlar bu hile camiasındaki hile kodlayan arkadaşlarımızın en çok sevdiği şeyler uzaklık yani offsetler hani deöiştik ya can değeri ,mermi değeri, karakterimizin xyz değerleri düşündüğünüz her şey isimine kadar şimdi ben canımı 150 yapmıştım biraz aşşağı inersem
Ahanda burada ec değeri bizim canımızdı zaten 4 bytes yazan yere çift tıklayınca
Description kısmına can yazarsam daha belirli olucaktır.
Bakın Böyle Daha iyi. Şimdi aynı şekilde mermi değerini ve isim değerlerini bulalım bu işi size bırakıyorum öyle ezbere olmaz değerlerin isimlerini yazın ve örnek can EC ise bunu bir not defterine kopyalayın kayıt edin. bize şimdilik isim, can, mermi değerleri yeter çünkü ileriki derslerimizde düşmanların değerini alıp onların ismini canını ve mermisini almayı göstericem belki videolu bir şekilde de yapabilirim. Neyse değerlerinizi bulduğunuzu varsayıyorum. artık kodlama bölümüne geçsek mi NOT: enitiy addresinizi yani "ac_client.exe + 18AC00" Bu addresi kesinlikle kayıt edin.
Arkadaşlar c++ ı visual studio 2019 ile yapıcam siz istediğinizle yapabilirsiniz. TEKRARLIYORUM: Bu bir 0 dan bir kodlama değildir temeli olan arkadaşlar içinidir temeli atmak isteyen arkadaşlar Hacker Dio abimizden öğrenebilirler. Şimdi yeni bir c++ consol uygulaması açıcam
koldara şimdi size verceğim hazır bir memory işlemi olan kütüphaneyi indirin ve göstediğim şekilde include edin ben bu kodu hazır yabancı kaynaklardan buldum birazcık editledim içine ramden string okuma işlemi yaptırdım Gerekli header şudur:
Şifresi: mh ;
normalde bir classta virüs olmaz ama kurallar gereği virüsttoal koydum şimdi bunu nasıl include edicez onu göstericem.
Aynı Bu Şekilde header filese sağ tık -> var olan item -> memory.h dosyamız. kısayol shift+alt+a ile mmeory.h dosyamızı seçtik ama en önemlisi memory.h dosyamızı bu gölüme koymanız
kodumuza dönelim
gördüğünüz gibi hatalar çıktı şimdi bunu düzeltelim bir kaç ayar yapıcaz.
projemizi seçip sağ tık ayarlar dersek ya da alt+enter
c++ dilinin standardını değiştirip advancede gelirsek
burdan multi-byte karakter setini seçip uygula diyip tamam basıyoruz.
eveet hatalar kalktı şimdi ana cpp kodumuza dönelim.
burda mem classımızı dahil edip oyunumuzu seçiyoruz ve modülümüz alıyoruz modül dediğimiz hani vardı ya "ac_client.exe + 18AC00" heh tamda burdaki "ac_client.exe" ile offsetimizi birleştirmek için kullanılıyor modül çok önemlidir.
şimdi yeni bir namespace oluşturup içine gerekli can vs offsetlerimizi yerleştirelim
burada rahat kullanım için namespace oluşturup içine gerekli değerleri attıktan sonra artık ramdeki verileri okumaya geçelim.
C++:
#include <iostream>
#include "memory.h"
namespace offsetler {
uintptr_t localent = 0x18AC00;
uintptr_t can = 0xEC;
uintptr_t mermi = 0x140;
uintptr_t isim = 0x205;
}
Memory mem = Memory{"ac_client.exe"}; //oyunun exesini seçiyoruz ce deki oyunu seçiyormuşuz gibi düşünebilirisiniz.
int main()
{
uintptr_t modules = mem.GetModuleAddress("ac_client.exe"); //ac_client.exe'mizi seçmiş olduk
uintptr_t localpointer = mem.Read<std::uintptr_t>(modules + offsetler::localent);// ac_client.exe + 0x18AC00 işlemi yaptırdık
int can = mem.Read<std::uintptr_t>(localpointer + offsetler::can); // ac_client.exe + 0x18AC00 -> 0xEC = yani can verimizi aldık
int mermi = mem.Read<std::uintptr_t>(localpointer + offsetler::mermi); // ac_client.exe + 0x18AC00 -> 0x140 = yani mermi verimizi aldık
std::string isim = mem.ReadString(localpointer + offsetler::isim); // ac_client.exe + 0x18AC00 -> 0x205 = yani isim verimizi aldık
}
açıklamaları yazıyor şimdi bunu c++ daki iostream kütüphanesindeki coutda gösterelim
Tüm Verilerimizi Çekmiş bulunmaktayız bitmiş kodunu buraya yazıyorum ama sizin kendiniz yapmanız daha sağlıklı olacaktır.
C++:
#include <iostream>
#include "memory.h"
namespace offsetler {
uintptr_t localent = 0x18AC00;
uintptr_t can = 0xEC;
uintptr_t mermi = 0x140;
uintptr_t isim = 0x205;
}
Memory mem = Memory{"ac_client.exe"}; //oyunun exesini seçiyoruz ce deki oyunu seçiyormuşuz gibi düşünebilirisiniz.
int main()
{
setlocale(LC_ALL, "Turkish");
uintptr_t modules = mem.GetModuleAddress("ac_client.exe"); //ac_client.exe'mizi seçmiş olduk
uintptr_t localpointer = mem.Read<std::uintptr_t>(modules + offsetler::localent);// ac_client.exe + 0x18AC00 işlemi yaptırdık
int can = mem.Read<std::uintptr_t>(localpointer + offsetler::can); // ac_client.exe + 0x18AC00 -> 0xEC = yani can verimizi aldık
int mermi = mem.Read<std::uintptr_t>(localpointer + offsetler::mermi); // ac_client.exe + 0x18AC00 -> 0x140 = yani mermi verimizi aldık
std::string isim = mem.ReadString(localpointer + offsetler::isim); // ac_client.exe + 0x18AC00 -> 0x205 = yani isim verimizi aldık
std::cout << "Canımız : " << can << std::endl;
std::cout << "Mermimiz : " << mermi << std::endl;
std::cout << "Adımız : " << isim << std::endl;
}
Evet bu dersimiz bu kadardı diğer derslerde ne yapmam gerek nasıl bir anlatım isterseniz yazarsanız sevinirim gelecek eğitimde düşmanların canını almayı göstereceğim. Herkese iyi forumlar kolay gelsin