Tersine Mühendislik 5 [Keygen Yazma]

Tersine mühendislik serisinin 5. bölümünde keygen nasıl yazılır? Hedef programın algoritması neye göre oluşmaktadır? Bu verilerin nerede nasıl oluştuğunu inceleyeceğiz.

Daha önceki serilerde tersine mühendislik yaparken kullandığımız araçları .netframework kütüphanesi için ve win32 kütüphanesi olmak üzere ikiye ayırmıştık. Keygen yazarken yine araçlarımız ikiye ayrılacak. Biz şimdilik kolay oluşu ve anlaşılabilirliği açısından .net tabanlı bir program üzerine keygen yazacağız. Win32 kütüphanesini kullanan yazılımlar için RedAsm veya DbgAsm kullanılıyor. Ancak bunlar başlangıç düzeyi için fazlasıyla karmaşık diyebilirim. Şimdilik sadece mantığını anlamamız yeterli olacaktır.

Görsel Anlatım:

KeygenMe

Hedef Program : KeygenMe.exe
Kullanılan Araç : DnSpy.exe (.netframework tabanlı yazılımları debug etmeye yarıyor.)

Lisans doğrulamasının yapıldığı yeri bulalım.
Hedef Programın Serial Kontrolünün Olduğu Yer.

1– Hedef programımızın vermiş olduğu hatayı string olarak aratıyoruz.

2- Hatanın bir kısmını yazıyorum “Invalid Serial Number” hatasından sadece “Serial” yazarak aratma yaptım.

3- Butonun click eventine tıklayarak 4. bölüme geçiyorum.

4– Lisans kodunun doğru olup olmadığı kontrol ediliyor. Yanlış ise hata mesajına atıyor. Doğru ise form açılacak.

Algoritmayı çözelim ve keygenimizi yazalım. 
Lisans algoritması
Yukarıda vermiş olduğum 4. bölümde lisans doğrulama kısmına bakmıştık şimdi yukarıdaki kodları biraz daha anlaşılır halde sıra ile yazmamız gerekiyor. Yazalım ki algoritma daha okunaklı bir hal alsın bizde rahatça keygenimizi yazalım .
Algoritma içerisindeki adımlar:
  • Makine kodu oluştur.
  • Makine kodu ile girilen isim değerini şifrele
  • Programın oluşturduğu kod ile kullanıcının yazdığı değeri karşılaştır.
Try
Dim text As String = Me.TextBox1.Text
Dim text2 As String = Me.TextBox3.Text
Dim machineID As String = (New GetCPUID + GetMachineID)
Dim str As String = StringCipher.License(machineID, text)
If StringCipher.CompareStrings(str, text2) Then
MyProject.Forms.MainForm.Show
Me.Close
Else
Interaction.MsgBox("Invalid Serial Key! Try again!", 
MsgBoxStyle.Critical, "Try Again !")
End If
End Try

Tüm algoritma  bu kadar aslında girilen değer ve makine kodu arasında bir tür şifreleme işlemi yapıyor. Girilen kod ile kendi oluşturacağı kodu karşılaştırıyor. Kod içersindeki bağlantıları şema haline getirmiş olduğum resimde işlemleri sırasına koymuştum şimdi aynı sıraya göre keygeni visual studio 2017 versiyonunda kodlamaya başlayalım.

Keygen Taslağı

Basit arayüzlü keygen taslağı ayarladım.ilk olarak yukarıda vermiş olduğum şemaya bakarak algoritmanın işleyişine göz atalım. Adım adım gidelim.

1- Makine kodu oluşturma:

Makine kodu almak için gerekli olan kodlar

Bu kodları yukarıda şemasını vermiş olduğum hedef programın içerisinden aldım. Gerekli olan kütüphaneleri ekledim. GetMachineID  fonksiyonu çağırdığımızda bize makine kodunu verecek.Videolu anlatımda anlamanız daha kolay olacak.

2- Makine kodu ile girilen isim değerini şifreleme:

Makine kodu ile girilen isim değerini şifreleyen kod bölümü

Girdiğimiz isim değeri ile 1. adımda oluşan makine kodu şifrelendiğinde çalışan kod bölümümüz. Son olarak fonksiyonun dönderdiği değeri key olarak alabiliriz.

Sonuç :
Algoritmayı çözdük ve programın oluşturduğu gibi bir kod oluşturduk
Videolu Anlatım :

Photo of author

Mert Dirilik

Eğitimli insanlar topluma borçludurlar. Bir işin nasıl yapılabileceğini biliyorken bir başkasının yapamadığını görüp susmaları kendilerini yetiştiren o topluma ihanettir.

“Tersine Mühendislik 5 [Keygen Yazma]” üzerine 4 yorum

Yorum yapın