Merhaba arkadaşlar,
Bir önceki yazımızda Reflector ile nasıl reverse engineering yapıp dll ve exe den kodları geri döndürebileceğimizi gördük. Bu makalemizle alakalı olan o makaleyi incelemenizi tavsiye ederim. buradan erişebilirsiniz.
Daha öncede dediğim gibi exe ve dll lerden kodlara erişmek oldukça kolay. Bunu tamamiyle engellemenin herhangi bir yolu yok.
Ama şöyle bir şansımız var. Obfuscator yani karıştırıcı programlar sayesinde kodun anlaşılabilirliğini azaltıyoruz.
Amacımız şu ki; kodun ayrıştırılıp çözülme işleminin maliyetini, kodun yeniden yazılma maliyetinin üzerine çıkartmak. Bu şekilde kod hırsızlığının önüne geçebilmemiz mümkün.
Piyasada oldukça fazla sayıda obfuscate programı var. Biz bu makalemizde xenocode postbuild i inceleyeceğiz.
Önce Xenocode Postbuild i bu sayfadan indiriyoruz.
Kurulumunu yaptıktan sonra programı çalıştırıyoruz. Bizi şöyle bir ekran karşılayacak.
Application sekmesinde ki add butonu vasıtasıyla obfuscate edilmesini istediğiniz dosyaları ekleyebilirsiniz. Biz burda daha önce reverse engineering yaptığımız dll i ekleyeceğiz.
Protect sekmesinde sol tarafta seçtiğiniz dll in içindeki özellikleri göreceksiniz. Burada xenocode değiştirilmesi uygun olan özellikleri kendisi otomatikman seçiyor. Diğer seçenekleri seçmenizi önermiyorum. Aksi halde runtime esnasında hata almanız mümkün.
Gene protect kısmında çok güzel bir özellik daha var. String Encryption. Yani string şifreleme. Burda select strings butonuna basıp şifrelenmesini istediğimiz stringleri seçiyoruz.
Daha sonra output sekmesine geçiyoruz. Burda en tepede şöyle bir özellik var.
- Multiple application assemblies - Seçtiğiniz her bir dll için ayrı ayrı obfuscate edilmiş dll dosyası oluşturur.
- Single application executable - Seçtiğiniz dll lerin hepsi için tek bir obfuscate edilmiş dosya oluşturur.
Ben ilk seçeneği seçiyorum ve sayfanın en sağ altında ki Xenocode Application butonuna basıyorum. Size output file ları save etmek istediğiniz yeri soracak. Bunu da seçtikten sonra işlemimiz tamamlanıyor ve dosyamız obfuscate olmuş oluyor.
Şimdi Reflector programımızı açalım ve bakalım dosyamız ne kadar obfuscate olmuş.:)
Alttaki resim obfuscate etmeden Reflector den geçirdiğimiz dll imiz.
Obfuscate ettikten sonra reflector ile baktığımız da;
butonun event ini şu şekilde
protected void Button1_Click(object sender, EventArgs e)
{
this.xfea7ba837ed94929();
}
Mesajver function ını ise şu şekilde görüyoruz.
private void xfea7ba837ed94929()
{
int num = 5;
int num2 = 10;
if (num == num2)
{
this.TextBox1.Text = string.Intern(x1110bdd110cdcea4._xaacba899487bce8c("
oelojfcpogjpdcbalfhaneoalffbgambiedcpdlcgebdoeid", 0x70eafb));
if (0 == 0)
{
}
}
else
{
this.TextBox1.Text = string.Intern(x1110bdd110cdcea4._xaacba899487bce8c("
nkfdilmdnmdecileklbfmkifklpffggghkngojfhfklhnkcigfjihjajfjhjmepjdjfkdjmk", 0x419b355a));
}
}
Yeteri kadar karışık değil mi:)
Resim de aşağıda
Umarım açıklayıcı bir yazı olmuştur.
Kolay gelsin diyorum herkese.
Turgay Sahtiyan
7ce697b5-47f5-495f-a100-b1587745902b|1|5.0