hacktricks/reversing/reversing-tools-basic-methods/cheat-engine.md
2024-02-10 18:14:16 +00:00

10 KiB
Raw Blame History

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman seviyesine kadar AWS hacklemeyi öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Cheat Engine, çalışan bir oyunun belleğinde önemli değerlerin nerede saklandığını bulmanıza ve değiştirmenize yardımcı olan kullanışlı bir programdır.
İndirip çalıştırdığınızda, aracın nasıl kullanılacağına dair bir öğreticiyle karşılaşırsınız. Aracı nasıl kullanacağınızı öğrenmek istiyorsanız, tamamlamanız şiddetle tavsiye edilir.

Ne arıyorsunuz?

Bu araç, bir programın belleğinde bazı değerlerin (genellikle bir sayı) nerede saklandığını bulmak için çok kullanışlıdır.
Genellikle sayılar, 4 bayt şeklinde saklanır, ancak double veya float formatlarında da bulabilirsiniz veya bir sayıdan farklı bir şey aramak isteyebilirsiniz. Bu nedenle, ne aramak istediğinizi seçtiğinizden emin olmanız gerekir:

Ayrıca farklı türde aramaları belirtebilirsiniz:

Ayrıca, belleği tarama sırasında oyunu durdurmak için kutuyu işaretleyebilirsiniz:

Kısayol Tuşları

Edit --> Ayarlar --> Kısayol Tuşları bölümünde, oyunu durdurma gibi farklı amaçlar için farklı kısayol tuşları ayarlayabilirsiniz (belleği taramak istediğiniz bir noktada oldukça kullanışlıdır). Diğer seçenekler de mevcuttur:

Değeri Değiştirme

Aranan değeri bulduktan sonra (bu konuda daha fazlası aşağıdaki adımlarda), değeri çift tıklayarak değiştirebilirsiniz, ardından değerin üzerine çift tıklayarak değeri değiştirebilirsiniz:

Ve son olarak, değişikliğin bellekte yapılmasını sağlamak için onay işaretini işaretleyin:

Bellekteki değişiklik hemen uygulanır (oyun bu değeri tekrar kullanana kadar değer oyunda güncellenmez).

Değeri Arama

Öyleyse, kullanıcınızın hayatı gibi önemli bir değeri iyileştirmek istediğinizi ve bu değeri bellekte aradığınızı varsayalım)

Bilinen bir değişiklikle

Değerin 100 olduğunu varsayalım, bu değeri aramak için bir tarama yaparsınız ve birçok eşleşme bulursunuz:

Sonra, değeri değiştirmek için bir şey yaparsınız ve oyunu durdurup bir sonraki taramayı yaparsınız:

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ğeriniz varsa, o değeri tekrar değiştirmek için bir şey yapın ve adresleri filtrelemek için başka bir "sonraki tarama" yapın.

Bilinmeyen Değer, bilinen değişiklik

Değeri bilmediğiniz ancak nasıl değişeceğini bildiğiniz bir senaryoda (ve hatta değişikliğin değerini de) sayınızı arayabilirsiniz.

Bu nedenle, "Bilinmeyen başlangıç değeri" türünde bir tarama yapmaya başlayın:

Ardından, 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 bulduktan sonra, onu değiştirebilirsiniz.

Unutmayın, birçok olası değişiklik vardır ve sonuçları filtrelemek için bu adımları istediğiniz kadar yapabilirsiniz:

Rastgele Bellek Adresi - Kodu Bulma

Şimdiye kadar bir değeri depolayan bir adresi nasıl bulacağımızı öğrendik, ancak oyunun farklı çalıştırmalarında bu adresin belleğin farklı yerlerinde olması oldukça olasıdır. Bu nedenle, her zaman o adresi nasıl bulacağımızı bulalım.

Bahsedilen hilelerden bazılarını kullanarak, mevcut oyununuzun önemli değeri depoladığı adresi bulun. Ardından (istediğinizde oyunu durdurarak) bulunan adrese sağ tıklayın ve "Bu adresi kim kullanıyor" veya "Bu adrese yazanları bul" seçeneğini seçin:

İlk seçenek, bu adresi kullanan kod parçalarını (oyunun kodunu değiştirebileceğiniz gibi başka şeyler için de kullanışlıdır) bilmek için kullanışlıdır.
İkinci seçenek, daha spesifik ve bu durumda daha yardımcı olacaktır çünkü bu değerin nereden yazıldığını bilmek istiyoruz.

Bu seçeneklerden birini seçtikten sonra, hata ayıklayıcı program programa bağlanacak ve yeni bir boş pencere görünecektir. Şimdi, oyunu oynayın ve değeri değiştirin (oyunu yeniden başlatmadan). Pencere, değeri değiştiren adresleri ile doldurulmalıdır:

Değeri değiştiren adresi bulduğunuzda, kodu istediğiniz gibi değiştirebilirsiniz (Cheat Engine, bunu hızlı bir şekilde NOP'larla değiştirmenize olanak tanır):

Artık kodu, sayınızı etkilemeyecek şekilde değiştirebilir veya her zaman olumlu bir şekilde etkileyecek şekilde değiştirebilirsiniz.

Rastgele Bellek Adresi - İşaretçiyi Bulma

Önceki adımları takip ederek, ilgilendiğiniz değerin nerede olduğunu bulun. Ardından, "Bu adrese yazan şeyi bulun" kullanarak bu değeri yazan adresi bulun ve üzerine çift tıklayarak ayrıştırma görünümünü alın:

Ardından, yeni bir tarama yaparak "[]" arasındaki onaltılık değeri arayın (bu durumda $edx'in değeri):

(Eğer birkaç tane çıkarsa genellikle en küçük adres olanı gereklidir)
Şimdi, ilgilendiğimiz değeri değiştirecek olan işaretçiyi bulduk.

"Adresi El ile Ekle" üzerine tıklayın:

Şimdi, "İşaretçi" onay kutusuna tıklayın ve bulunan adresi metin kutusuna ekleyin (bu senaryoda, önceki görüntüde bulunan adres "Tutorial-i386.exe"+2426B0 idi):

(İşaretçi adresini girdiğinizde ilk "Adres" otomatik olarak doldurulur)

Tamam'a tıklayın ve yeni bir işaretçi oluşturulacaktır:

Artık o değeri değiştirdiğinizde, değerin bulunduğu bellek adresi farklı olsa bile önemli değeri değiştiriyorsunuz.

Kod Enjeksiyonu

Kod enjeksiyonu, hedef sürece bir kod parçası enjekte ettiğiniz ve ardından kodun yürütülmesini kendi yazdığınız kod üzerinden yönlendirdiğiniz bir tekniktir (örneğin, puanları azaltmak yerine puan vermek gibi).

Öyleyse, oyuncunuzun yaşamını 1 azaltan adresi bulduğunuzu hayal edin:

Ayrıştırıcıyı göstermek için Show disassembler üzerine tıklayın.
Ardından, Auto assemble penceresini çağırmak için CTRL+a tuşlarına basın ve Template --> Code Injection seçeneğini seçin.

Değiştirmek istediğiniz talimatın adresini doldurun (bu genellikle otomatik olarak doldurulur):

Bir şablon oluşturulacaktır:

Bu durumda, yeni montaj kodunu "newmem" bölümüne ekleyin ve orijinal kodu "originalcode" bölümünden kaldırın, eğer yürütülmesini istemiyorsanız. Bu örnekte, enjekte edilen kod 1 yerine 2 puan ekleyecektir:

Execute üzerine tıklayın ve böylece kodunuz programda enjekte edilerek işlevin davranışı değişmelidir!

Referanslar

  • Cheat Engine öğretici, Cheat Engine ile başlamayı öğrenmek için tamamlayın
AWS hackleme hakkında sıfırdan kahraman olmak için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!

HackTricks'ı desteklemenin diğer yolları: