AltınSoft Makale Arşivi

Web Hosting Hizmetleri

Anasayfa | Toplu SMS | Web Hosting | Makale Ara | Anketler | Sitene Ekle | RSS Kaynağı

Arama


Gelişmiş Arama

ILDASM ve SuppressIldasmAttribute

ILDASM ve SuppressIldasmAttribute

Kategori  Kategori : İnternet Genel
Yorumlar  Yorum Sayısı : 0
Okunma  Okunma : 187
Tarih  Tarih : 02 Mart 2008 22:38

ILDASM ve SuppressIldasmAttribute

MSIL disassembler (ILDASM) aracı, .NET platformu üzerinde geliştirmiş olduğunuz DLL ve EXE assembly'lerinin içindeki kodları gösteren bir uygulamadır. Bu araç, sadece kodları değil, bir assembly içindeki namespace'leri ve tipleri de gösterir. ILDASM aracı, .NET SDK ile birlikte gelmektedir. Ayrıca, VS.NET kurulumundan sonra da VS.NET komut satırından ILDASM.EXE'yi çalıştırabilirsiniz.

 

Pek çok faydası olan bu aracın varlığı, pek çok kişi için "kodların çalınabileceği" bir ortam yaratmaktadır ve ILDASM içinde assembly'lerin görüntülenmesinin nasıl engellenebileceği araştırılmaktadır.

 

.NET 2.0 ve sonrasında, bir assembly'nin ILDASM aracı içinden açılmasını engelleyen bir "attribute" vardır. SuppressIldasmAttribute kullanılarak, bir namespace, class ya da metodun ILDASM içinde görülmesini engelleyebilirsiniz.

 

Örneğin, bir VS.NET içinde windows forms projemiz olsun:

 

using System;

using System.Windows.Forms;

 

namespace ILDASM_Test

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Test");

        }

    }

}

Bu uygulamamız derledikten sonra, ILDASM aracını açıp (örneğin VS.NET komut satırını açıp, ILDASM yazarak enter’a basalım), File -> Open ile uygulamamızın derlendiği “bin” klasörüne gidelim ve assembly’mizi açalım.

Görebileceğiniz gibi, uygulamamızın içindeki herşeyi ILDASM içinden görebiliriz.

Eğer, bu assembly’nin ILDASM içinde açılmasını engellemek isteseydik, kodumuza aşağıdaki gibi değiştirmemiz yeterli olacaktı:

using System;

using System.Windows.Forms;

using System.Runtime.CompilerServices;

 

[assembly: SuppressIldasmAttribute()]

namespace ILDASM_Test

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            MessageBox.Show("Test");

        }

    }

}

Farkedebileceğiniz gibi, [assembly: SuppressIldasmAttribute()] kullanıyoruz. Bunu kullanabilmemiz için, namespace olarak System.Runtime.CompilerServices servisini de kullanmamız gerekmekte.

 

Bu işlemlerden sonra derlediğimiz kodu tekrar ILDASM içinde açmaya çalıştığımız zaman karşımıza, bu assembly’nin korunan bir assembly olduğunu ve ILDASM içinde açılamayacağını belirten bir mesaj çıkacaktır.

Burada hemen önemli bir not eklemem gerekiyor. Bu attribute’u kullanmak, kodlarınızın ILDASM içinden açılmasını engelleyecektir. Ancak .NET kodlarınızı “reflector” tarzı programların içinden açılmasını engellemeyecektir. Bu tarz uygulamalara örnek olarak Lutz Roeder’s .NET Reflector uygulamasını gösterebiliriz.

Eğer kodlarınızı mümkün olduğunca gizlemek istiyorsanız, “obfuscator” yazılımları kullanmayı deneyebilirsiniz. Yine de bu tarz uygulamalar genellikle kodlarınızın okunmasını ve anlaşılmasını zorlayacak bazı değişiklikler yapmaktan fazlasını yapamayacaklardır. Bu tarz uygulamalara örnek olarak Dotfuscator uygulamasını gösterebiliriz. Dotfuscator Community Edition, VS.NET’in pek çok sürümü ile birlikte gelmektedir.

 

Geçerli olduğu platformlar:

.NET 2.0 ve sonrası.

 

Kaynaklar:

 

MSIL Disassembler (Ildasm.exe)

http://msdn2.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx

 

SuppressIldasmAttribute Class

http://msdn2.microsoft.com/en-us/library/system.runtime.compilerservices.suppressildasmattribute(VS.80).aspx

 

Attribute Class

http://msdn2.microsoft.com/en-us/library/system.attribute(VS.80).aspx

 

Lutz Roeder’s .NET Reflector

http://www.aisto.com/roeder/dotnet/

 

Getting Started With Dotfuscator

http://msdn2.microsoft.com/en-us/library/ms227276(VS.80).aspx

 

 

Yazdırılabilir Sayfa Yazdırılabilir Sayfa | Word'e Aktar Word'e Aktar | Tavsiye Et Tavsiye Et | Yorum Yaz Yorum Yaz

İnternet Genel

En Çok Okunan Makaleler

Seçtiklerimiz

Anket

AltınSoft Makale Arşivini beğendinizmi ?




Tüm Anketler

© 2004-2009 Tüm Hakları Saklıdır
RSS Kaynağı

AltınSoft Bilişim Teknolojileri

Altyapı: MyDesign Haber Sistemi