Cheat Engine
Reading time: 6 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
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ı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.
Ne arıyorsunuz?
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 yapmak istediğinizi seçtiğinizden emin olmalısınız:
Ayrıca farklı türde arama seçenekleri de belirtebilirsiniz:
Belleği tararken oyunu durdurmak için kutucuğu işaretleyebilirsiniz:
Kısayollar
Düzenle --> Ayarlar --> Kısayollar bölümünde, oyunu durdurma 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:
Değeri değiştirme
Aradığınız değeri nerede bulduysanız (bununla ilgili daha fazla bilgi sonraki adımlarda) çift tıklayarak değiştirebilirsiniz, ardından değerine çift tıklayın:
Ve son olarak, bellekteki değişikliği yapmak için onay kutusunu işaretleyin:
Bellekteki değişiklik hemen uygulanacaktır (oyun bu değeri tekrar kullanmadığı sürece değer oyunda güncellenmeyecektir).
Değeri arama
Öyleyse, kullanıcı yaşamı gibi önemli bir değeri geliştirmek istediğinizi varsayalım ve bu değeri bellekte arıyorsunuz.
Bilinen değişim yoluyla
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 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 bunu 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 "sonraki tarama" yapın.
Bilinmeyen Değer, bilinen değişim
Eğer değeri bilmiyorsanız ama değiştirmek için ne yapmanız gerektiğini biliyorsanız (ve hatta değişim değerini de biliyorsanız) numaranızı arayabilirsiniz.
Öyleyse, "Bilinmeyen başlangıç değeri" türünde bir tarama yaparak başlayın:
Sonra, değeri değiştirin, 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:
Rastgele Bellek Adresi - Kodu Bulma
Ş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, o adresi her zaman nasıl bulacağımızı öğrenelim.
Bahsedilen bazı ipuçlarını kullanarak, mevcut oyununuzun ö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 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çtikten sonra, 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ıca değiştirmenize izin verir):
Böylece, kodu değiştirerek sayınıza etki etmeyecek veya her zaman olumlu bir şekilde etki edecek şekilde değiştirebilirsiniz.
Rastgele Bellek Adresi - Göstergeleri Bulma
Ö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 göstericiyi bulduk.
"Adres Ekle" seçeneğine tıklayın:
Şimdi, "Gösterici" onay kutusuna tıklayın ve metin kutusuna bulunan adresi ekleyin (bu senaryoda, önceki resimde bulunan adres "Tutorial-i386.exe"+2426B0 idi):
(İlk "Adresin", girdiğiniz gösterici adresinden otomatik olarak doldurulduğuna dikkat edin)
Tamam'a tıklayın ve yeni bir gösterici 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
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, puan vermek yerine puan düşürmek).
Öyleyse, oyuncunuzun yaşamından 1 çıkaran adresi bulduğunuzu hayal edin:
Dizilimi göster seçeneğine tıklayarak dizilim kodunu 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:
Böylece, "newmem" bölümüne yeni assembly kodunuzu ekleyin ve "originalcode" bölümünden orijinal kodu 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!
Referanslar
- Cheat Engine eğitimi, Cheat Engine ile başlamayı öğrenmek için tamamlayın
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Azure Hacking'i öğrenin ve pratik yapın:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.