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

Uzman Üye
Katılım
1 Ocak 2018
Mesajlar
166
Tepki puanı
15
Ödüller
6
6 HİZMET YILI

b0ecc5_8f092b241ca34480807f1410397c6dea~mv2.png
Ö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 :D

Ce pointer bulma.png
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​

1701538306555.png

Ben 4 vs 4 açtım siz kafanıza göre açabilirsiniz. Cheat engineyi açıp oyunu seçelim.

1701538438196.png

Canımı arattım şimdi bir bomba atıp canımı düşürmem gerekki hangi değer dorğu bulalım.

1701538559004.png

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.

1701538646586.png

Burda find out what accesses this addresse basıp benim canıma kimler ne yazabiliyor onu görüyorum

1701538739755.png

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

1701538825370.png

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

1701539067553.png

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.

1701539284646.png

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

1701540458684.png

gösterdiğim yere çift tıkalrsanız karşımıza adress çıkacak.

1701540540464.png

"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ı ?

1701541064777.png

Kendimiz manuel bir addres oluşturucaz ki can değerlerimize vs bakabilelim

1701541173820.png

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.

1701541327232.png

içini değiştirdiğimizde 150 yapabildik evet şimdi eminiz hadi artık işlemlerimizi biraz daha kalabalıklaştıralım.

1701541440875.png

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

1701541721651.png

static entity içindeki valueyi kopyalayıp group 1 içine yazıp structers new structers dersek kısayol ctrl + n

1701541852459.png

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.

1701541911039.png

Ş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

1701542088281.png

Ahanda burada ec değeri bizim canımızdı zaten 4 bytes yazan yere çift tıklayınca

1701542146468.png
Description kısmına can yazarsam daha belirli olucaktır.

1701542191913.png

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.

1701542696611.png

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

1701543200007.png
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.
1701543807562.png


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

1701544491404.png

kodumuza dönelim

1701543905321.png

gördüğünüz gibi hatalar çıktı şimdi bunu düzeltelim bir kaç ayar yapıcaz.
1701543954495.png
projemizi seçip sağ tık ayarlar dersek ya da alt+enter
1701544046452.png
c++ dilinin standardını değiştirip advancede gelirsek
1701544094437.png
burdan multi-byte karakter setini seçip uygula diyip tamam basıyoruz.
1701544151790.png

eveet hatalar kalktı şimdi ana cpp kodumuza dönelim.

1701544661097.png

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

1701545008567.png

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
1701545803764.png


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
    1701538987174.png
    12 KB · Görüntüleme: 107
Onaylı Üye
Katılım
7 May 2021
Mesajlar
68
Tepki puanı
6
Ödüller
3
Yaş
24
3 HİZMET YILI
kodlamadan bişe anlamasamda gayet açıklayıcı olmuş hocam
 
Uzman Üye
Katılım
20 Tem 2020
Mesajlar
297
Tepki puanı
16
Ödüller
3
Yaş
26
4 HİZMET YILI
hocam bu hile kodlama içinse gerçekten öğrendikçe yazılımı bakacağım programlarınıza çok sağolun
 
Üst