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.
Konu Başlıkları
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:
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.
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.
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.
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:
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:
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.
Derste ki uygulamayı nereden bulabiliriz
lütfen tek konuya tek yorum yapın. aksi halde ceza alırsınız.
Merhaba KeygenMe.exe dosyasını nereden indirebilirim.
tersine mühendislik arşivi için destek verebiliyoruz. onu da sitemizdeki ilgili konunun altından yorum yaparak talep edebilirsiniz.