Para ve Güç nasıl şifrelerden arındırıldı?

Son günlerde retro ortamının en şekilli forumunda yeni bir Türkçe oyun belirdi: “Para ve Güç”. Oyun bir monopoly klonu. Bu oyunun ortaya çıkışında kimin parmağı var bilmiyorum ama bir yazılım daha Türk yazılım havuzuna kazandırılmış oldu. Oyunun yazarı aynı zamanda forumun sürekli kullanıcılarından biri olan Hayrettin Yıldız. Fakat hepimiz gibi, eskiden yazdığı ve nedense önemsemediği bu oyunun kaynak kodunu kaybetmiş. Oyun ise eskilerin bildik kopya koruma yöntemi olan “kitapçıktan şu kelimeyi bul” sorularını kullanıyor. Bu yüzden oyun ilk postalandığında oynanamaz bir haldeydi.

Oyunun grafiklerini (ve Murad Omay ismini) görünce direkt olarak amos kodu olduğunu anladım. Derlenmiş basic ne de olsa tüm değişkenleri bir arada tutmaya gayret gösterir, resim/müzik gibi medya da amos’a özgü “bank”larda saklandığı için ram’de bunları da son derece düzenli, başlıklı ve detaylı bilgiler içeren şekilde bulabilirsiniz. Yani oyunun kopya korumasını çözmek büyük bir iş değildi.

Yine de referans olması açısından basamakları paylaşacağım. Bu yöntemi sadece crack yapmak için değil, cheatleri bulmak için de kullanabilirsiniz (debugger ile). Aşağıdaki işlemler için şu araçlar gerekecek size:

WinUae (v1.46 kullandım)
Hex Editor (Cygnus hex editor kullandım)
Bir programlama dili (belirli koşullara göre arama tarama yapacak programları yazacak kadar hakim olduğunuz herhangi bir dil- ben el altında hazıl olduğu için C# kullandım)

Cracking denemez aslında bu yaptığıma. Bugünün programları ile çok kolay oluyor. Ben şöyle yaptım:
1.UAE’de seçilebilecek en basit konfigi seçtim (küçük ram) (1 dk.)
1.UAE Ramdump aldım (save state seçip, formatı USS yerine RAM DUMP seçin) (1 dk.)
2.Küçük bir program yazdım, hafızadaki her byte’ı shift edip, Xor’layıp invert edip (bilinen basit şifreleme yöntemlerini test edip) hafızayı istediğim şekilde tarıyordu. (1 saat)
3.Program 1MB’lık Ram Dump’ı çeşitli kombinasyonlarda taradı ve sonunda hayrettinin kullanmış olduğunu varsaydığım yöntemlerden birinin tuttuğunu gördüm (10 dakika).
4.Kırılacak dosyayı adf’den extract ettim. (3 dakika)
5.Kombinasyonu dosya üzerinde denedim ve şifrelerin açığa çıktığını gördüm. (0 dakika)
6.Kombinasyonu ters uygulayıp tüm stringlerin içini boşalttım (5 dakika)
7.Kırılmış dosyayı tekrar adf’ye inject ettim. (3 dakika)

Ha tabii burada önce keywordlerden en az birinin bilinmesi gerekiyor. Onu da şöyle bulmuştum:
1.Oyun açılıp şifre sorulduğunda rastgele ama benzersiz bir kelime yazdım cevap olarak: “Arda”
2.Uae debugger’ını açıp (shift+F12) hafızada nereye denk geldiğini buldum: s “Arda”
3.Bu kelimenin tutulduğu yerin yakınında karşılaştırılan şifre stringleri tutulur genelde, etrafına baktım: m adres (bu adres yukarıda s komutunun sonucunda çıkan adreslerden biri veya her biri olacak)
4.Beklendiği üzere cevap arda kelimesinin hemen yanında belirdi.
5.Bu kelimeyi not ettim ve sözde cracking işlemine başladım.

—————————————

sonuç, oyunun orjinal hali şu adreste (arşivciler için):
http://depo3.ifrance.com/pvg.7z
kırılmış hali ise burada (meraklılar için)
(Sorulan şifreyi sadece “enter” tuşuna basıp geçebilirsiniz.):
-> Para ve Guc (1992)(Safa Soft)[cr REF].zip

2 thoughts on “Para ve Güç nasıl şifrelerden arındırıldı?”

Leave a Reply

Your email address will not be published. Required fields are marked *