Cheat Engine
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Cheat Engine, bir oyunun çalıştığı bellek iç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ızı gösteren bir eğitim ile karşılaşırsı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; değerine çift tıklayarak ve ardından değerine tekrar çift tıklayarak:
Ve son olarak, bellekteki değişikliği gerçekleştirmek 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 bellek içinde 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ğerin değişmesi için bir şey yapıyorsunuz ve oyunu durdurup bir sonraki taramayı 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" yapın.
Değeri bilmediğiniz ancak değişmesini nasıl sağlayacağınızı (ve hatta değişimin değerini) bildiğiniz 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 size sunulacaktır:
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 bellekte farklı yerlerde olma olasılığı yüksektir. Bu nedenle, bu 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 neyin eriştiğini bul" veya "Bu adrese neyin yazdığını bul" seçeneğini seçin:
İlk seçenek, bu adresin hangi kod parçaları tarafından kullanıldığı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 neyin yazdığını bul" 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):
(Birden fazla görünüyorsa genellikle en küçük adres olanı almanız gerekir) Artık ilgilendiğimiz değeri değiştirecek pointer'ı bulduk.
"Adresi Manuel Olarak 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"in, girdiğiniz pointer adresinden otomatik olarak doldurulduğuna dikkat edin)
Tamam'a tıklayın ve yeni bir pointer oluşturulacaktır:
Artık, o 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 ettiğiniz ve ardından kodun yürütülmesini kendi yazdığınız koddan geçecek şekilde yönlendirdiğiniz bir tekniktir (ö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 çalıştırılmasını istemiyorsanız "originalcode" bölümündeki orijinal kodu kaldırın. 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.