İPUCU

Tersine Mühendislik Reverse Engineering ve Cracking ile ilgili dökümanları bulabileceğiniz bölüm.

Seçenekler

.Net KeygenMe #1

21-10-2018 16:31
#1
Phemis - ait Kullanıcı Resmi (Avatar)
Junior Hunter
Üyelik tarihi:
12/2017
Mesajlar:
2.250
Teşekkür (Etti):
873
Teşekkür (Aldı):
610
Konular:
152


Hedefiniz Konumda Verilen KeygenMe'ye Uygun Keygen Yazmanız. (Link'i İle Birlikte Çözümü Atınız.)


İndirme Link


VirüsTotal


(Önceki Konum Algoritma Hatasından Dolayı Kaldırıldı)


Algoritmayı Düzelltim Bir Takımda Koruma Ekledim Kolay Gelsin..


: Keygen Link :

(Sonradan Unutmayayım Diye Şimdi Ekledim)

@BackBox @x0rz

Arkadaşlar Anlatımı Detaylı Bir Şekilde Yapayım Belki Bazı Arkadaşlara Yol Gösterici Olur.


Şimdi Programı Öncelikle Tarayalım.
(Detect İt Easy İle Tarandı)
Sonuç :
Kod:
PE: protector: Themida/Winlicense(2.X)[-] 

PE: linker: unknown(11.0)[EXE32]
Gördüğümüz Gibi Kodlar Themida İle Korunuyor.


Themida Unpack Yapmalıyız. Bu Unpack Olayını MegaDumper Programı İle Yapacağız.


KeygenMe'yi Açtık MegaDumper'i Açtık Herşey Güzel Derken Hop bi anda ikiside kapandı.
Anladık ki programda MegaDumper Koruması Var.
Bu Olay Process İsmi İncelemekle Oluyor Genellikle..


MegaDumper'in İsmini Değiştirelim.
Mesela Ben MegaDumper İsmini MegaDumper2 Diye Değiştirdim.


Tekrardan İkisini Başlattığımız Zaman İkiside Kapanmıyor Yani Korumayı Bypass'ledik..


Şimdi İse Gelelim Unpack'e Zaten Unpack'i herkez yapabilir MegaDumper'e Girelim Programı Bulalım Sağ Tıklayıp .Net Dump'a Basalım Bu Kadar.
Daha Sonrasında Program Neredeyse Oraya Dumps Klasörü Oluşacaktır.


Oluşan Dumps Klasörünün İçerisindeki KeygenMe'yi Tarattığımız Zaman Alacağımız Sonuç :



Kod:
PE: library: .NET(v4.0.30319)[-] 

PE: linker: unknown(11.0)[EXE32]
Gördüğümüz Gibi Koruma Kalkmış .Net Dili İle Yazıldığı Belli Oluyor. Şimdi Uygulamamızı DnSpy Programı İle Açalım Ve Kodları İnceleyelim.





Gördüğümüz Gibi Orda Bi Sifreleme Diye bir dll var.
Önce Kodlara Bi Bakalım Ondan Sonra Ona zaten bakıcaz.


Form1_Load Olayına Geldiğimiz Zaman Önümüze Böyle Bir Kod Bloğu Çıkıyor :





Kodları İncelediğimiz Zaman Burda Hiç bir şeyin lisans doğrulamayla alakası olmadığını anlıyoruz çünkü programda Hem Buttona Tıklayınca Yapıyor Hemde burda bir if - else yapısı yok.
Yani Burdaki Tüm Kodları Kopyalayıp Keygenimize Atabiliriz.





ee attık hata verdi bir sürü dediğinizi duyar gibiyim.


Şimdi Öncelikle Form'umuza Bir Label Bir TextBox Ekleyelim.


Form'mumuzda herşeyden bir tane olduğu için label 3 olması çok saçma önce onun icabına bakalım ve onu label 1 yapalım
Daha Sonrasında Başka Kelimelerlede Hata Olduğunu Görüyoruz.
Onların İcabınada Şöyle Bakacağız :


Project > Add Reference > FrameWork Kısmından Arama Yerine System.Management Yazıyoruz Ve En Üstte Çıkana Tik Atıp Ok Diyoruz.


Daha Sonra Kod Bölümüze Geldiğimizde Hata Devam Ediyor Olacaktır En Üste (Kütüphane Bölümüne) Çıkıp Oraya



Kod:
using System.Management;
Yazıyoruz Ve Kodlardaki Tüm Hata Düzeliyor.
Programımızı Debugladığımızda Label'da Sonuç Alıyoruz.


Şimdi Gelelim İşin Meşakatli Kısmına (Serial Hesaplama)


Şimdi KeygenMe'mizde Görüyoruz ki Bir Button Var dnSpy'dada Kodlara Baktığımızda Sadece button1_click olayının olduğunu göreceksiniz oraya giriyoruz ve önümüze böyle bir kod bloğu çıkıyor :





label1.text bir şifrelemeden geçiriliyor ve bu şifrelemeyi textbox'a yazabilirseniz kabul ediyor.


Orda Gördüğümüz cyrt ' in üstüne bir kere bastığımızda bizi böyle bir yere götürecek :



privateSifleremecyrt=newSiflereme();


Daha Sonrasında Sifreleme'yede Bir Kez Basarsak Bizi Sifreleme Class'ının İçerisine Götürecek.


Keygen'imizde
Project > Add Class Yolunu Yapıp Ok Diyoruz.
Ve Daha Sonrasında dnSpy ' da Gördüğümüz Sifrele class'ının İçerisinde Ne Var Ne Yok Kopyalıyoruz ve Keygen'imizde Oluşturduğumuz Class'ın İçersine Atıyoruz..





En Aşağı İniyoruz Ve Birinci Parantezin Altına İnip Bu Kodu Yazıyoruz :

privateSifleremecyrt=newSiflereme();


Daha Sonrasında Yine Kütüphane Bölümüne Çıkıp Bu Kodu Yazıyoruz :

usingSifreleme;


Daha Sonra Class Olaylarınıda Halletiğimize Göre Form_Load'ın En Altına İnip Bu Kodu Yazıyoruz :


textBox1.Text = cyrt.Sifrele(label1.Text);


Kodlarımızın Hepsinin Son Hali :


Keygen Uygulama Kodları :


Kod:
using Sifreleme;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Management;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace KeygenNet
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private **** Form1_Load(object sender, EventArgs e)
        {
            string text = "";
            ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("Select * FROM WIN32_Processor");
            ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get();
            foreach (ManagementBaseObject managementBaseObject in managementObjectCollection)
            {
                ManagementObject managementObject = (ManagementObject)managementBaseObject;
                text = managementObject["ProcessorId"].ToString().Trim();
            }
            string str = "c";
            ManagementObject managementObject2 = new ManagementObject("win32_logicaldisk.deviceid=\"" + str + ":\"");
            managementObject2.Get();
            string str2 = managementObject2["VolumeSerialNumber"].ToString();
            text = text + "-" + str2;
            label1.Text = text;
            textBox1.Text = cyrt.Sifrele(label1.Text);
        }
        private Siflereme cyrt = new Siflereme();
    }
}



Class Kodları :


Kod:
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace Sifreleme
{
    // Token: 0x02000002 RID: 2
    public class Siflereme
    {
        // Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00002050
        public byte[] Sifrele(byte[] SifresizVeri, byte[] Key, byte[] IV)
        {
            MemoryStream memoryStream = new MemoryStream();
            Rijndael rijndael = Rijndael.Create();
            rijndael.Key = Key;
            rijndael.IV = IV;
            CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndael.CreateEncryptor(), CryptoStreamMode.Write);
            cryptoStream.Write(SifresizVeri, 0, SifresizVeri.Length);
            cryptoStream.Close();
            return memoryStream.ToArray();
        }

        // Token: 0x06000002 RID: 2 RVA: 0x000020A8 File Offset: 0x000020A8
        public byte[] SifreCoz(byte[] SifreliVeri, byte[] Key, byte[] IV)
        {
            MemoryStream memoryStream = new MemoryStream();
            Rijndael rijndael = Rijndael.Create();
            rijndael.Key = Key;
            rijndael.IV = IV;
            CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndael.CreateDecryptor(), CryptoStreamMode.Write);
            cryptoStream.Write(SifreliVeri, 0, SifreliVeri.Length);
            cryptoStream.Close();
            return memoryStream.ToArray();
        }

        // Token: 0x06000003 RID: 3 RVA: 0x00002110 File Offset: 0x00002110
        public string Sifrele(string sifrelenecekMetin)
        {
            byte[] bytes = Encoding.Unicode.GetBytes(sifrelenecekMetin);
            PasswordDeriveBytes passwordDeriveBytes = new PasswordDeriveBytes(this.password, new byte[]
            {
                30,
                42,
                63,
                110,
                68,
                69,
                170,
                187,
                139,
                33,
                236,
                50,
                153
            });
            byte[] inArray = this.Sifrele(bytes, passwordDeriveBytes.GetBytes(32), passwordDeriveBytes.GetBytes(16));
            return Convert.ToBase64String(inArray);
        }

        // Token: 0x06000004 RID: 4 RVA: 0x0000216A File Offset: 0x0000216A
        public Siflereme()
        {
        }

        // Token: 0x04000001 RID: 1
        public string password = "1";
    }
}
Ve Programı Debugladığımızda Sonuç Alıyoruz.

İyi Forumlar..

Konu SeNZeRo tarafından (23-10-2018 22:00 Saat 22:00 ) değiştirilmiştir.

21-10-2018 20:31
#2
Leatrix - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
08/2018
Nereden:
Kerkük
Yaş:
80
Mesajlar:
2.234
Teşekkür (Etti):
370
Teşekkür (Aldı):
455
Konular:
233
Eline Sağlık Post Kasmak İçin Arka Arkaya Paylaşmışsın Gibi Görünüyor
21-10-2018 20:42
#3
Phemis - ait Kullanıcı Resmi (Avatar)
Junior Hunter
Üyelik tarihi:
12/2017
Mesajlar:
2.250
Teşekkür (Etti):
873
Teşekkür (Aldı):
610
Konular:
152
Alıntı:
Leatrix´isimli üyeden Alıntı Mesajı göster
Eline Sağlık Post Kasmak İçin Arka Arkaya Paylaşmışsın Gibi Görünüyor
Amacım post kasmak değil saat farkı var zaten @R4V3N gereksiz bi post var o silinebilir.

Teşekkür ederim.
21-10-2018 21:31
#4
jasgues - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
04/2009
Nereden:
Kocaeli
Yaş:
25
Mesajlar:
646
Teşekkür (Etti):
99
Teşekkür (Aldı):
160
Konular:
44
Keşke biraz bekleseydin konuyu yeni gördüm
Kullanıcı İmzası
Jasgues
Phemis Teşekkür etti.
21-10-2018 21:42
#5
Phemis - ait Kullanıcı Resmi (Avatar)
Junior Hunter
Üyelik tarihi:
12/2017
Mesajlar:
2.250
Teşekkür (Etti):
873
Teşekkür (Aldı):
610
Konular:
152
Alıntı:
jasgues´isimli üyeden Alıntı Mesajı göster
Keşke biraz bekleseydin konuyu yeni gördüm
bir dahaki sefere hocam
21-10-2018 21:46
#6
Üyelik tarihi:
07/2018
Yaş:
20
Mesajlar:
962
Teşekkür (Etti):
26
Teşekkür (Aldı):
137
Konular:
143
yararlı konu olmuş teşekkürler
Kullanıcı İmzası

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı