Cheat Engine
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Cheat Engine çalışan bir oyunun belleğinde önemli değerlerin nerede saklandığını bulmak ve bunları değiştirmek için yararlı bir programdır. İndirdiğinizde ve çalıştırdığınızda, aracı nasıl kullanacağınızla ilgili bir eğitim ile karşılaşacaksınız. Aracı nasıl kullanacağınızı öğrenmek istiyorsanız, bunu tamamlamanız şiddetle tavsiye edilir.
Bu araç, bir programın belleğinde bir değerin (genellikle bir sayı) nerede saklandığını bulmak için çok yararlıdır. Genellikle sayılar 4bayt formatında saklanır, ancak bunları double veya float formatlarında da bulabilirsiniz veya bir sayıdan farklı bir şey aramak isteyebilirsiniz. Bu nedenle, neyi arama istediğinizi seçtiğinizden emin olmalısınız:
Ayrıca farklı türde aramalar belirtebilirsiniz:
Belleği tararken oyunu durdurmak için kutucuğu işaretleyebilirsiniz:
Düzenle --> Ayarlar --> Kısayollar kısmında, oyunu durdurmak gibi farklı amaçlar için farklı kısayollar ayarlayabilirsiniz (bu, belleği taramak istediğinizde oldukça kullanışlıdır). Diğer seçenekler de mevcuttur:
Aradığınız değerin nerede olduğunu bulduğunuzda (bununla ilgili daha fazla bilgi sonraki adımlarda) onu değiştirebilirsiniz; üzerine çift tıklayıp, ardından değerine çift tıklayarak:
Ve sonunda bellekteki değişikliği yapmak için onay kutusunu işaretleyerek:
Bellekteki değişiklik hemen uygulanacaktır (oyun bu değeri tekrar kullanmadığı sürece değer oyunda güncellenmeyecektir).
Öyleyse, geliştirmek istediğiniz önemli bir değer (kullanıcınızın hayatı gibi) olduğunu varsayıyoruz ve bu değeri bellekte arıyorsunuz.
100 değerini aradığınızı varsayalım, bu değeri aramak için bir tarama yapıyorsunuz ve birçok eşleşme buluyorsunuz:
Sonra, değer değiştiğinde bir şey yapıyorsunuz ve oyunu durdurup bir sonraki tarama yapıyorsunuz:
Cheat Engine, 100'den yeni değere geçen değerleri arayacaktır. Tebrikler, aradığınız değerin adresini buldunuz, şimdi onu değiştirebilirsiniz. Eğer hala birkaç değer varsa, o değeri tekrar değiştirmek için bir şey yapın ve adresleri filtrelemek için bir başka "sonraki tarama" gerçekleştirin.
Değeri bilmediğiniz ancak değişmesini sağlamak için ne yapacağınızı bildiğiniz bir senaryoda, numaranızı arayabilirsiniz.
Öyleyse, "Bilinmeyen başlangıç değeri" türünde bir tarama yaparak başlayın:
Sonra, değerin değişmesini sağlayın, değerin nasıl değiştiğini belirtin (benim durumumda 1 azaldı) ve bir sonraki tarama yapın:
Seçilen şekilde değiştirilen tüm değerler ile karşılaşacaksınız:
Değerinizi bulduğunuzda, onu değiştirebilirsiniz.
Birçok mümkün değişim olduğunu ve sonuçları filtrelemek için bu adımları istediğiniz kadar yapabileceğinizi unutmayın:
Şimdiye kadar bir değeri saklayan bir adres bulmayı öğrendik, ancak oyunun farklı çalıştırmalarında bu adresin belleğin farklı yerlerinde olma olasılığı yüksektir. Bu nedenle, o adresi her zaman nasıl bulacağımızı öğrenelim.
Bahsedilen bazı ipuçlarını kullanarak, mevcut oyunun önemli değeri sakladığı adresi bulun. Sonra (isterseniz oyunu durdurarak) bulunan adrese sağ tıklayın ve "Bu adrese ne erişiyor" veya "Bu adrese ne yazıyor" seçeneğini seçin:
İlk seçenek, bu adresin kullanıldığı kodun hangi kısımlarını bilmek için yararlıdır (bu, oyunun kodunu nerede değiştirebileceğinizi bilmek gibi daha fazla şey için yararlıdır). İkinci seçenek daha özeldir ve bu durumda değerin nereden yazıldığını bilmekle ilgilendiğimiz için daha faydalı olacaktır.
Bu seçeneklerden birini seçtiğinizde, hata ayıklayıcı programa bağlanacak ve yeni bir boş pencere açılacaktır. Şimdi, oyunu oynayın ve değeri değiştirin (oyunu yeniden başlatmadan). Pencere, değeri değiştiren adreslerle doldurulmalıdır:
Artık değeri değiştiren adresi bulduğunuza göre, kodu istediğiniz gibi değiştirebilirsiniz (Cheat Engine, bunu NOP'lar için hızlı bir şekilde değiştirmenize izin verir):
Artık kodu, sayınızı etkilemeyecek şekilde veya her zaman olumlu bir şekilde etkileyecek şekilde değiştirebilirsiniz.
Önceki adımları takip ederek, ilgilendiğiniz değerin nerede olduğunu bulun. Sonra, "Bu adrese ne yazıyor" seçeneğini kullanarak bu değeri yazan adresi bulun ve üzerine çift tıklayarak ayrıştırma görünümünü alın:
Sonra, "[]" arasındaki hex değerini aramak için yeni bir tarama yapın (bu durumda $edx'in değeri):
(Birçok adres çıkarsa genellikle en küçük adresi almanız gerekir) Artık ilgilendiğimiz değeri değiştirecek pointer'ı bulduk.
"Adres Ekle" seçeneğine tıklayın:
Şimdi, "Pointer" onay kutusuna tıklayın ve metin kutusuna bulunan adresi ekleyin (bu senaryoda, önceki resimde bulunan adres "Tutorial-i386.exe"+2426B0 idi):
(İlk "Adres" kutusunun, girdiğiniz pointer adresinden otomatik olarak doldurulduğuna dikkat edin)
Tamam'a tıklayın ve yeni bir pointer oluşturulacaktır:
Artık bu değeri her değiştirdiğinizde, değerin bulunduğu bellek adresi farklı olsa bile önemli değeri değiştiriyorsunuz.
Kod enjeksiyonu, hedef işleme bir kod parçası enjekte etme ve ardından kodun yürütülmesini kendi yazdığınız koddan geçirecek şekilde yönlendirme tekniğidir (örneğin, size puan vermek yerine puanınızı azaltmak).
Öyleyse, oyuncunuzun hayatından 1 çıkaran adresi bulduğunuzu hayal edin:
Dizilimi göster seçeneğine tıklayarak dizilimi alın. Sonra, CTRL+a tuşlarına basarak Otomatik dizilim penceresini açın ve Şablon --> Kod Enjeksiyonu seçeneğini seçin:
Değiştirmek istediğiniz talimatın adresini doldurun (bu genellikle otomatik olarak doldurulur):
Bir şablon oluşturulacaktır:
Öyleyse, yeni assembly kodunuzu "newmem" bölümüne ekleyin ve orijinal kodu "originalcode" bölümünden kaldırın, eğer çalıştırılmasını istemiyorsanız**.** Bu örnekte, enjekte edilen kod 1 çıkarmak yerine 2 puan ekleyecektir:
Uygula'ya tıklayın ve kodunuz programda enjekte edilerek işlevselliğin davranışını değiştirmelidir!
Cheat Engine eğitimi, Cheat Engine ile nasıl başlayacağınızı öğrenmek için tamamlayın