anonuser23532
Kıdemli Üye
- 9 Ara 2017
- 2,602
- 12
DNLİB : Bize .NET uygulamalarında ve modüllerinde okuma ve yazma işlemi veren bir modül.
Bugün ki konumuz dnlib With StringDecryption/Encryption
Yani dnlib'i kullanarak String şifreleme ve çözme işlemi yapacağız.
Öncelikle bu işlemi yapabilmek için VisualStudio üzerinde bir C# Console project oluşturup içerisine dnlib.dll ' i dahil etmemiz gerekmekte..
Bunu nuGet package manager kullanarak yapacağız.
Ben bu işlem için dnlib 3.1.0 sürümünü tercih ettim.
Dnlib NuGet Link için Tıkla
Projemizi oluşturduktan sonra yukarıda bulunan Project seçeneğine tıklayalım.
Daha sonrasında açılır menü üzerinde Manage NuGet Packages... seçeneğine tıklayalım
Project > Manage NuGet Packages...
Karşımıza bu şekilde gelecek olan ekrandan sağ üst köşedeki search ' ı kullanarak "dnlib" ' i aratalım.
Ve çıkan ilk sonucu install edip bitmesini bekleyelim.
Install işlemi bittiğinde Install buttonu yerine bu yeşil tiki bırakacaktır )
Sağdaki Solution Explorer'e de bakarsak dnlib'in references kısmına geldiğini göreceğiz.
KODLAMAYA GEÇELİM / StringEncryption
Öncelikle kod kütüphanemize gerekli kütüphaneleri ekleyelim.
Kod:
using dnlib.DotNet;
using dnlib.DotNet.Emit;
Daha sonrasında Main Kısmına kodlarımızı yazabiliriz.
KODLAR İÇİN TIKLA !
AÇIKLAMALAR
1 : StringEncryption işlemine tabi tutacağımız uygulamayı programa yüklüyoruz.
*args[0] ne oluyor ?
args[0] programın üstüne sürükle bırak ile yükleyeceğimiz uygulamadır.
2 : Kodlar içerisinde bulunan değerlerin içerisinde String Seçimi yaptığımız kısımdır.
3 : oldString değişkenine Seçili String değerini atıyoruz
Buradaki old kodların şifrelenmediği anlamına geliyor.
4 : newString değerine Seçili eski String değerinin base64 ile şifrelenmiş halini atıyoruz.
5 : Programdaki Stringler cryptlendikten sonra ŞifrelenmişUygulama çıktımızı alıyoruz.
Kullanım
Sağda Solution Explorer kısmında bulununan Solutionumuza sağ tıklayıp open folder browser... seçeneğine basalım
Daha sonrasında bin > debug yolunu takip ederek exe dosyamızın bulunduğu yere gelelim.
Dosyamız bu şekilde.
Şimdi örnek bir uygulama ile şifreleme işlemi gerçekleşiyor mu ona bakacağız.
String işlemleri diye bir exe oluşturdum.
Exe'mizin şifrelenmemiş hali bu şekilde :
Sürükle - Bırak mantığı ile Stringislemleri adlı exe dosyamızı StringEncryption'un üzerine sürüklüyorum.
Sürükle - Bırak yaptıktan sonra SifrelenenUygulama diye bir exe dosyası oluştuğunu görüyoruz.
(Program neredeyse çıktı oraya oluşturulur)
SifrelenenUygulama'nın kodlarını dnSpy yardımı ile inceleyelim.
Evet görüyoruz ki stringler base64 ile şifrelenmişler.
Hepsini decode etmeden okuyamayız..
KODLAMAYA GEÇELİM / StringDecryption
Yukarıdaki işlemlerin aynısını StringDecryption adlı projemiz için de yapıyoruz.
1) StringDecryption adlı bir C# Console Project oluşturalım. (İsim isteğe bağlı)
2) NuGet Manager kullanarak dnlib ' i dahil edelim.
3) İndirme işlemi bittikten sonra kütüphanelerimizi projeye dahil edelim.
KODLAR İÇİN TIKLA
AÇIKLAMALAR
1 : Programa Sürükle - Bırak mantığı ile uygulama yükledik.
2 : Programdaki string sayısı kadar dönecek bir döngü ayarladık
3 : Seçili string değerini oldString değişkenine attık (Şifrelenmiş String)
4 : oldString yani şifrelenmiş string değerini base64 decode ederek data adlı bir hafıza kutucuğuna attık
5 : decodedString adlı değişkene data adlı hafıza kutucuğumuzdaki decode edilmiş değerleri string türünde yazdırdık.
6 : Kullanıcı için şifrelenmiş ve şifrelenmemiş arasındaki farkı gösterdik
Kullanım
Kullanım yine aynı şekilde Şifrelenmiş uygulamamızı Sürükle - Bırak mantığı ile StringDecryption adlı dosyamızın üstüne bıraktığımız zaman Console penceresinde bize sonuçları gösterecektir.
Bu konumuz burada sona ermiştir.
Tersine Mühendislik serisine devam edeceğiz.
Merak ettiğiniz bir konu var ise bana bunu özelden veyahut konu yorum kısmından belirtebilirsiniz.