Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

memory offset...

Konu, 'C / C++' kısmında Poker33 tarafından paylaşıldı.

  1. Poker33

    Poker33 Yeni Üye

    Kayıt:
    14 Haziran 2012
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Başlıkda da yazdığım gibi memorydeki bir adresi offsetlemek üzerine bu yazı.Peki diyeceksiniz nerden geldi bu aklına,nerden çıktı bu konu?Sniper Elite v2 oyununa bir trainer ( Sınırsız can,sınırsız mermi,şarjör değiştirmeme vs. gibi özellikleri barındıran hile programı. ) indirdim.Daha ilk defa kullanıyordum ve acaba bu adamlar bu trainerleri nasıl yapıyorlar diyerek başladım araştırma.2-3 saatlik bir araştırmadan sonra C++ ile daha çok trainer örneği buldum.Bu yüzden C++ dilini tercih ettim.Oyun seçimi olarak da Counter Strike 1.6 .Buraya kadar her şey normal.İnsandır merak eder sonuçda :cool:.Cheat Engine kurdum gerekli olan can,çelik yelek,para,mermi gibi değerlerin bellek adreslerini aldım.Diyeceksiniz ki bu programı yapmaya gerek yok Cheat Engine de bu işi çözebilir,ama orda da verilen değerler sadece görüntü oluyor,kullanılınca orijinal haline geri dönüyor.Açtım Visual Studio 2010 u ve empty project dedim.Bir güzel yazdım kodları,bitirdim,derledim ve hatasız çalıştı benim console application.Girdim Counter Strike 1.6 ya açtım programımı yazdığım herşey sorunsuz çalışıyor :bravo:.Sevinçden uçuyorum.Buyrun resim:
    [​IMG]
    Sonra bir el bombası aldım.İşte o anda kafamdan aşağıya kaynar sular döküldü.Counter da para 16000 dir,ben 16000 i offsetleyerek 30000 yaptım.El bombası $ 300 fakat para kısmında birden -29450 yazdı :( .Resim:
    [​IMG]
    Şimdi paradan ümidi kestik sıra geldi cana.Ama yinede bir şey değişmedi.Ondada aynı sorun ile karşılaştım.Buyrun resim:
    [​IMG]
    Şimdi diyeceksiniz bu kadar da uzun yazılır mı gel sadede.Bu yüzden kusuruma bakmayın.Şimdi bu kadar uğraştık olmadı.Daha sonra Counter Strike 1.6 trainer aradım buldum.Botlarla çalışıyor ama online de çalışmıyor.Bana online lazım.Kendi yaptığım programın exe sini ve hazır yapılmış traineri de verecem.Artık gurur meselesi oldu bu :( .Kodlarımı burda vereceğim ve bellek adreslerini de.Nerde yanlış yapıyorum,neyi eksik yapıyorum da böyle oluyor.Yada başka bir yolu var mı?Lütfen yardım edin!!

    indirme linki:
    http://s2.dosya.tc/server16/oBPeI2/cs1.6Trainer.rar.html

    Programımın kodu:

    Kod:
    #include <iostream>
    #include <Windows.h>
    #include "conio.h"
    #include "stdio.h"
    
    
    using namespace std;
    // I have use Cheat Engine.
            // can         0x019E40E4   healt
            // çelik yelek 0x019E59B4   armour
            // para        0x019E5E2C   money
            // mermi       0x019E27E8   ammo
    ///////////cs 1.6 online v23 patch memory address////
            // can                0x01A17C78   healt
            // çelik yelek        0x01A19544   armour
            // para                0x01A1B9FC   money
            // mermi            0x01A16368   ammo
            // SCORE            0x01A25680
            // How many Flash?  0x01A1783C
            // How many Grande?  0x01A17840
            // How many Smoke?  0x01A17844    
            // How many c4?        0x01A17848
    
    
    void hile()
    {
        int can = 250;
        int cy=250,para=30000,mermi=900;
        char isim[20];
        SetConsoleTitle("cs 1.6 Trainer");
        printf("\nPencere Ismini Giriniz-->>");
        gets(isim);
        HWND hWnd = FindWindow(0,(LPCSTR)isim);// pencere ismi // Window name.//Counter-Strike
    
    
        if(hWnd == 0){
            cerr << "Pencere Bulunamiyor." << endl;//cannot find window.
            system("PAUSE");
        }else{
            DWORD pId;
            GetWindowThreadProcessId(hWnd, &pId);
            HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pId);
    
    
            if(!hProc){
                cerr<< "Yontem Acilamiyor." << endl;//Cannot open process.
                system("PAUSE");
            }else{
                    int healt = WriteProcessMemory(hProc, (LPVOID)0x01A17C78, &can, (DWORD)sizeof(can),NULL);//can // healt hack
                    int armour = WriteProcessMemory(hProc, (LPVOID)0x01A19544, &cy, (DWORD)sizeof(cy),NULL);//celik yelek  // armour
                    int money = WriteProcessMemory(hProc, (LPVOID)0x01A1B9FC, &para, (DWORD)sizeof(para),NULL);//para  // money
                    int ammo = WriteProcessMemory(hProc, (LPVOID)0x01A16368, &mermi, (DWORD)sizeof(mermi),NULL);//mermi  // ammo
                if(healt > 0 && armour > 0 && money > 0 && ammo > 0){
                    clog << "Can,Celik Yelek,Para,Mermi Degerleri Bellege Yazildi." << endl;//Process memory written.
                    system("PAUSE");
                }else{
                    cerr << "İslem Bellege Yazilamiyor." << endl;//Connot write process memory.
                    system("PAUSE");
                }
    
    
                CloseHandle(hProc);
                system("PAUSE");
            }
        }
    }
    
    
    void main()
    {
        hile();
    }
    

     
  2. acehreli

    acehreli Ali Çehreli

    Kayıt:
    19 Ekim 2002
    Mesajlar:
    4,973
    Beğenilen Mesajlar:
    2
    C++ türlerin bit sayılarını belirlemez. Senin programın senin ortamındaki int'in bayt adedi kadar bilgi yazıyor. O adreslerdeki türler o program derlendiğinde de aynı büyüklükte miydiler?

    Değillerse o sayaçların ya bir bölümlerine yazıyorsun ya da dışlarına taşıp başka değişkenlerin üzerlerine yazıyorsun.

    Ali
     
  3. wingless

    wingless Aktif Üye

    Kayıt:
    28 Mart 2011
    Mesajlar:
    412
    Beğenilen Mesajlar:
    0
    Hatta o yazdığınız alanlar tamsayı bile olmayabilir.

    Ayrıca online oyunlarda genelde böyle basit hileler işe yaramaz. Can ve paranızın kaydı asıl olarak sunucuda tutulur, sizin bilgisayarınızda değil.
     
  4. Poker33

    Poker33 Yeni Üye

    Kayıt:
    14 Haziran 2012
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Cevap yazdığın için teşekkürler.Bu yüzden online olmiyan Counter Strike 1.6 da denedim orda da işe yaramadı malesef(Hazır yapılmışıda var trainer in yapılabiliyor demek ki ama nasıl?).Başka bir adres offsetleme yöntemi yada başka bir yol var mı bildiğiniz ?
     
  5. Furkan Onka Uğur

    Furkan Onka Uğur Moderatör Yetkili Kişi

    Kayıt:
    12 Eylül 2008
    Mesajlar:
    3,711
    Beğenilen Mesajlar:
    48
    Şehir:
    Ankara
    Doğru bellek değerlerine yazdığınızdan da emin misiniz?
     
  6. Poker33

    Poker33 Yeni Üye

    Kayıt:
    14 Haziran 2012
    Mesajlar:
    13
    Beğenilen Mesajlar:
    0
    Ali bey ben gördüğüm değişkenlerin adresleri aldım ve offsetledim.Evet haklısınız bir bölümüne yazılıyor.Orijinal değerler programın içerisinde bir yerlerde.Ama ben onu göremiyorum.İşte o adresin bağlı olduğu gerçek değeri değiştirmek önemli.Ben bunu yapamadım.

    Cheat Engine programı ile oyun içerisinde gördüğüm can,mermi vs. gibi değerleri azaltarak yada artırarak budum.İşte en ince ve benim kırıldığım nokta burası.Ben o değerlerin gerçek adreslerine hangi yardımcı programla yada hangi yolla ulaşacam?
     
  7. w3root

    w3root Misafir