Keygen for Zerohour’s Keygen Me #1

20.04.2017
2506 Okunma

Esen;
Decompile.us Türkiye’de etkinliğiyle göz dolduran, ters mühendislik ile uğraşan harika gençlerden oluşan bir oluşum. Bugün sitenin kurucularından Zerohour’un hazırladığı Keygen Me #1 için keygen yazacağız. Zerohour’sKeygen Me #1 dosyasını Decompile.us adresinde Crackme ve Keygenme(Meydan okuma sanatı) bölümünden indirebilirsiniz.

Zerohour forumlarda keygenmeden şöyle bahsetmiş:

Merhaba arkadaşlar. İlk defa basit de olsa algoritmalı bir keygen me yaptım. FnZnL!’ye özendim herhalde :)

Serial avı çok basit. O yüzden serial kabul edilmiyor. Vakti olanlar ilgilenirse mutlu olurum. Kolay gelsin.

Yazıldığı dil: Delphi
Packer/Protector: Yok
Zorluk Derecesi: Kolay

Siz yine de “exeinfo” ya da “RDG Packer Dedector” ile uygulamaya bakabilirsiniz.

Ben uygulamayı IDA PRO ile açıyorum ve “String”leri aratıyorum -> View -> Open Subviews-> Strings (Shift+F12). Burada şu stringleri görüyoruz:

“Tebrikler” stringine çift tıklayalım bakalım neredeymiş:

Hmm bunlar Zerohour tarafından tanımlanan değişkenler. ‘X’ tuşuna basalım bakalım nerelerden bu ‘Tebrikler’ yazısı çağrılıyormuş?

‘X’ tuşuna başınca yukarıdaki gibi bir kutucuk çıkacak. Bizim ‘Tebrikler’ dizisine sadece bir tane referans varmış. Başka bir uygulama incelerken bu tür referanslar 10larca olabilir, haberiniz olsun. Şimdi çift tıklayalım ve o adrese gidelim:

Yukarıdaki resimde yapılan algoritmaya göre iyi ya da kötü mesaj kutusuna dallanıyoruz. Hesaplamanın yapıldığı algoritmayı bulmak için ekranı biraz daha yukarı kaydırın ve inceleyin:
Bir tane koyu yeşil ok var. Hepsi aşağı dallanırken o yukarı dallanıyor. Demekki burada bir döngü var.
Bu döngünün başına bir break point koyup devam edebilirsiniz. Ama bence “IDA Pro” ekranında gördüğünüz o “subroutine”in en başına bir breakpoint koyup debug etmek daha mantıklı olacaktır.

Keygen Me #1 algoritması şöyle çalışıyor:
Kullanıcı adı en az 8 karakter olmalı.
8 karakterden yukarısı olsa bile aldırmıyor sadece ilk sekiz karakter ile çalışıyor.
Çalıştırıldığı bilgisayarda “GetVolumeInformation” APIsi çağırarak bizim deyişimizle HDD Seri nosunu çekiyor. Bu çekilen seri no onluk taban çevrilmediğinde 8 karakterden oluşuyor: 7CBE5788 gibi.
Sonra bu sayıyı string muamelesi yapıp her bir karakterinin onaltılık değerini alıyor.
Aynı işlemi girilen kullanıcı adının her bir karakteri içinde yapıyor. Ve bunları bırasını bozmadan birbirleriyle XOR işlemine tabi tutuyor.

b  l  u  e  d  e  v  i  l -> son karakter işleme girmiyor
62 6C 75 65 64 65 76 69 6C 
XOR
37 43 42 45 35 37 38 38 
7  C  B  E  5  7  8  8

XOR işleminin sonucunda 8 baytlık bir dizi oluşturuyor ve 4 ile 5. baytın arasına bir “-” ekliyor.
Bu arada 0-9 ve a-z A-Z karakter kontrolü de yapıyor. Kodları incelerken bunları da göreceksiniz.

[dm]138[/dm]

Yazdığım keygenin RadASM projesi olarak kaynak kodlarını da ekte bulabilirsiniz.
İyi eğlenceler.

Comments of this post

Henüz yorum bulunmuyor!