Konu 1: Hangi Tür Verileri Değiştirebiliriz?
Veriler iki yerde saklanır:
1- Sunucu içinde
2- Client yani istemci içinde
Sunucu tarafında tutulan verileri değiştiremiyoruz ancak client yani istemci içinde tutulan (bu bizim bilgisayarımız oluyor) verileri değiştirebiliryoruz.
Sunucu tarafında tutulan verilere örnek verecek olursak;
Can, Mermi, Kişilerin Pozisyonları gibi veriler sunucu tarafında tutulur ve değiştirilemez.
Cheat Engine gibi programlarda veriyi değiştirsek de değiştirdiğimiz bu veri -örnek veriyorum can- verimiz sadece bizim bilgisayarımızdaki kopyası olacaktır yani veriyi değiştirseniz ve ekranda 100 yazısı yerine 9999 yazısını görseniz bile bu veri sadece sizde öyle görünecektir ve herhangi bir hasar alışınızda canınız tekrar eski hale dönecektir.
Öteki yandan bilgisayarımızda tutulan ve değiştirilebilir verilerimize örnek verecek olursam;
Bakış Açımız (Kafamızı çevirince değişen açı), Zıplama, Vurma gibi veriler.
Yani özet olarak sunucu tarafındaki verileri sadece okuyabiliriz, değiştiremeyiz.
"Peki ya direk hafızadaki sv_cheats verisini "1" yapıp hileleri açsak sonra zaten gerisi kolay" gibi düşünmemek de lazım.
Çünkü VAC bunu çok kolay bir şekilde anlar ve oyundan atılırsınız.
Konu 2: Basitce Cheat Engine Kullanımı
Cheat Engine bir işlemin hafızadaki verilerini değiştirmemizi ve diğer çeşitli işlemlerimizi yapmamızı sağlayan bir araçtır.
Oyun hileleriyle az çok ilgilenmişseniz bu programla ilgilenmişsiniz demektir zaten.
Mantık basit önce bir işleme bağlanıyoruz (bu bizim için csgo.exe) ardından verinin hafızadaki yerini bulmak için arama bölümüne veriyi yazıyoruz, veriyi azaltıyoruz ve işlemi tekrar yapıyoruz. Ta ki seçenekler azalana kadar. Ardından verinin hafızadaki yerini buluyoruz.
Cheat Engine ile ilgili daha sonradan bir konu açacağım o yüzden Cheat Engine'ye çok değinmeyeceğim.
Konu 5: Offsetler
Offsetler bizim veri adresimizin, bir adresten kaç byte uzak olduğunu gösterir. Bu adres sizin bellekteki adresiniz (Local Player) veya başka bir oyuncunun bellekteki adresi olabilir.
Örnek verirsem can değeri için
(Buradaki 0x7E değeri rastgele bir değerdir)
LocalPlayer + 0x7E = Kullanıcının Canının Bellekteki Adresi
Ve biz işlemlerimizi bu adresdeki veriyi okuyarak yapacağız.
Konu 6: Kodlamaya Giriş
Önceki derstekileri uyguladığınıza göre artık kodlamaya girebiliriz.
Öncekikle verileri değiştirmek için bir işleme yani csgo.exe'ye bağlanmamız gerek ardından Windows.h kütüphanesinde bulunan ReadProcessMemory ve WriteProcessMemory fonksiyonları ile işlemlerimizi gerçekleştireceğiz.
Konu 7: ReadProcessMemory
ReadProcessMemory veya kısaca RPM fonksiyonu bir işlemin bir adresindeki veriyi okumamızı sağlar.
Windows.h kütüphanesinde bulunur.
Şimdi gelin fonksiyonun MSDN sayfasına bakalım.
Gördüğünüz gibi fonksiyonumuza 5 adet argüman girmemiz gerek;
hProcess: Fonksiyonu uygulayacağımız işlemin HANDLE'ı
lpBaseAddress: Okumak istediğimiz verinin adresi (LPC****)
lpBuffer: Veri okundukdan sonra yazılacak değişken (Mesela 100 değerini okudukdan sonra lpBuffer'ı 100 olarak ayarlıyor.)
nSize: Adresden kaç byte okunacağı
*lpNumberOfBytesRead: Kaç byte okunduğunu yazdıracağı veri (aynı lpBuffer gibi)
Eğer fonksiyon başarılı bir şekilde çalışırsa ReadProcessMemory 0 dışında bir veri döndürür.
Konu 8: WriteProcessMemory
WriteProcessMemory yani kısaca WPM belirli bir adresdeki veriyi değiştirir veya yazar.
Windows.h kütüphanesinde bulunur.
hProcess: Veriyi yazacağımız işlemin HANDLE'si
lpBaseAddress: Veriyi yazacağımız adres
lpBuffer: Yazacağımız veri
nSize: Yazacağımız verinin boyutu
*lpNumberOfBytesWritten: İşlem boyunca yazılmış byte sayısı
Kullancağımız ana fonksiyonlar bu kadar kodlardaki diğer fonksiyonlara MSDN sayfasından bakabilirsiniz.
Konu 9: Hafıza Değiştirici Sınıfı
Hem programımızı düzenli tutmak için hemde işden tasaruf etmek için bir sınıf oluşturuyoruz.
Buradaki kodları anlamıyorsanız lütfen önce C++ öğrenin!
Kodun tamamını https://github.com/tarik0/tht-oyun-hilesi/tree/master adresinden görebilirsiniz.
Artık oyuna da bağlandığımıza göre sonraki ders daha eğlenceli şeylere geçebiliriz.
Her zamanki gibi sonraki dersi görmek isterseniz
düğmesine basmayı unutmayın. İyi Forumlar!
Veriler iki yerde saklanır:
1- Sunucu içinde
2- Client yani istemci içinde
Sunucu tarafında tutulan verileri değiştiremiyoruz ancak client yani istemci içinde tutulan (bu bizim bilgisayarımız oluyor) verileri değiştirebiliryoruz.
Sunucu tarafında tutulan verilere örnek verecek olursak;
Can, Mermi, Kişilerin Pozisyonları gibi veriler sunucu tarafında tutulur ve değiştirilemez.
Cheat Engine gibi programlarda veriyi değiştirsek de değiştirdiğimiz bu veri -örnek veriyorum can- verimiz sadece bizim bilgisayarımızdaki kopyası olacaktır yani veriyi değiştirseniz ve ekranda 100 yazısı yerine 9999 yazısını görseniz bile bu veri sadece sizde öyle görünecektir ve herhangi bir hasar alışınızda canınız tekrar eski hale dönecektir.
Öteki yandan bilgisayarımızda tutulan ve değiştirilebilir verilerimize örnek verecek olursam;
Bakış Açımız (Kafamızı çevirince değişen açı), Zıplama, Vurma gibi veriler.
Yani özet olarak sunucu tarafındaki verileri sadece okuyabiliriz, değiştiremeyiz.
"Peki ya direk hafızadaki sv_cheats verisini "1" yapıp hileleri açsak sonra zaten gerisi kolay" gibi düşünmemek de lazım.
Çünkü VAC bunu çok kolay bir şekilde anlar ve oyundan atılırsınız.
Konu 2: Basitce Cheat Engine Kullanımı
Cheat Engine bir işlemin hafızadaki verilerini değiştirmemizi ve diğer çeşitli işlemlerimizi yapmamızı sağlayan bir araçtır.
Oyun hileleriyle az çok ilgilenmişseniz bu programla ilgilenmişsiniz demektir zaten.
Mantık basit önce bir işleme bağlanıyoruz (bu bizim için csgo.exe) ardından verinin hafızadaki yerini bulmak için arama bölümüne veriyi yazıyoruz, veriyi azaltıyoruz ve işlemi tekrar yapıyoruz. Ta ki seçenekler azalana kadar. Ardından verinin hafızadaki yerini buluyoruz.
Cheat Engine ile ilgili daha sonradan bir konu açacağım o yüzden Cheat Engine'ye çok değinmeyeceğim.
Konu 5: Offsetler
Offsetler bizim veri adresimizin, bir adresten kaç byte uzak olduğunu gösterir. Bu adres sizin bellekteki adresiniz (Local Player) veya başka bir oyuncunun bellekteki adresi olabilir.
Örnek verirsem can değeri için
(Buradaki 0x7E değeri rastgele bir değerdir)
LocalPlayer + 0x7E = Kullanıcının Canının Bellekteki Adresi
Ve biz işlemlerimizi bu adresdeki veriyi okuyarak yapacağız.
Konu 6: Kodlamaya Giriş
Önceki derstekileri uyguladığınıza göre artık kodlamaya girebiliriz.
Öncekikle verileri değiştirmek için bir işleme yani csgo.exe'ye bağlanmamız gerek ardından Windows.h kütüphanesinde bulunan ReadProcessMemory ve WriteProcessMemory fonksiyonları ile işlemlerimizi gerçekleştireceğiz.
Konu 7: ReadProcessMemory
ReadProcessMemory veya kısaca RPM fonksiyonu bir işlemin bir adresindeki veriyi okumamızı sağlar.
Windows.h kütüphanesinde bulunur.
Şimdi gelin fonksiyonun MSDN sayfasına bakalım.
Gördüğünüz gibi fonksiyonumuza 5 adet argüman girmemiz gerek;
hProcess: Fonksiyonu uygulayacağımız işlemin HANDLE'ı
lpBaseAddress: Okumak istediğimiz verinin adresi (LPC****)
lpBuffer: Veri okundukdan sonra yazılacak değişken (Mesela 100 değerini okudukdan sonra lpBuffer'ı 100 olarak ayarlıyor.)
nSize: Adresden kaç byte okunacağı
*lpNumberOfBytesRead: Kaç byte okunduğunu yazdıracağı veri (aynı lpBuffer gibi)
Eğer fonksiyon başarılı bir şekilde çalışırsa ReadProcessMemory 0 dışında bir veri döndürür.
Konu 8: WriteProcessMemory
WriteProcessMemory yani kısaca WPM belirli bir adresdeki veriyi değiştirir veya yazar.
Windows.h kütüphanesinde bulunur.
hProcess: Veriyi yazacağımız işlemin HANDLE'si
lpBaseAddress: Veriyi yazacağımız adres
lpBuffer: Yazacağımız veri
nSize: Yazacağımız verinin boyutu
*lpNumberOfBytesWritten: İşlem boyunca yazılmış byte sayısı
Kullancağımız ana fonksiyonlar bu kadar kodlardaki diğer fonksiyonlara MSDN sayfasından bakabilirsiniz.
Konu 9: Hafıza Değiştirici Sınıfı
Hem programımızı düzenli tutmak için hemde işden tasaruf etmek için bir sınıf oluşturuyoruz.
Buradaki kodları anlamıyorsanız lütfen önce C++ öğrenin!
Kodun tamamını https://github.com/tarik0/tht-oyun-hilesi/tree/master adresinden görebilirsiniz.
Artık oyuna da bağlandığımıza göre sonraki ders daha eğlenceli şeylere geçebiliriz.
Her zamanki gibi sonraki dersi görmek isterseniz