CE ile Pointer ve Offset bulma ve C++Kodlama #1

Uzman Üye
Katılım
1 Ocak 2018
Mesajlar
169
Tepki puanı
16
Ödüller
8
8 HİZMET YILI

Ö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.

  1. 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:
Bağlantıları görmek için lütfen Giriş Yap
Şifresi: mh ;
Bağlantıları görmek için lütfen Giriş Yap
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
 

Ekli dosyalar

  • 1701538987174.png
    12 KB · Görüntüleme: 177
Onaylı Üye
Katılım
7 May 2021
Mesajlar
68
Tepki puanı
6
Ödüller
3
Yaş
25
5 HİZMET YILI
kodlamadan bişe anlamasamda gayet açıklayıcı olmuş hocam
 
Onaylı Üye
Katılım
30 Kas 2019
Mesajlar
51
Tepki puanı
0
Ödüller
6
Yaş
26
6 HİZMET YILI
kullanıma güzel tebrikler yapana
 
Uzman Üye
Katılım
20 Tem 2020
Mesajlar
297
Tepki puanı
16
Ödüller
5
Yaş
28
5 HİZMET YILI
hocam bu hile kodlama içinse gerçekten öğrendikçe yazılımı bakacağım programlarınıza çok sağolun
 
Üye
Katılım
15 Ocak 2025
Mesajlar
1
Tepki puanı
0
Yaş
33
1 HİZMET YILI
Memory.h dosyası silinmiş rica etsem yenileyebilir misin?
Veya bu Memory.h dosyasına nereden erişim sağlayabiliriz?
 
Onaylı Üye
Katılım
30 May 2026
Mesajlar
67
Tepki puanı
1
Yaş
19
Sosyal
yeni başlayanların işine yarayacaktır, elinize sağlık.