Dotfuscator kullanılarak oluşturulan uygulamaları gizleme
özet
.NET Framework tabanlı uygulamalar ortak bir ara dil olarak adlandırılan dilde oluşturulduğundan, ayırma araçları ve benzerleri kullanılarak özgün kaynak koduna yakın bir biçimde okunabilirler. Bu bölümde, Visual Studio ile birlikte gelen gizleme aracı olan Dotfuscator'un, sınıf ve yöntem adlarını kolayca okunamayan bir biçimde gizlemek için nasıl gizleneceği açıklanmaktadır.
Burada Visual Studio 2010 kullanarak bundan bahsediyoruz, ancak Dotfuscator'u 2005 ve 2008'de de kullanabilirsiniz.
Çalışma Ortamı
Desteklenen Visual Studio Sürümleri
- 2005
- 2008
- 2010
Visual Studio Sürümünü Kontrol Edin
- 2005
- 2008
- 2010
madde
Dotfuscator Hakkında
Dotfuscator, .NET Framework ile yazılmış uygulamalarda kaynak kodunun sökülmesini zorlaştıran bir gizleme aracıdır. Dotfuscator, Visual Studio ile birlikte ücretsiz ve ücret karşılığında gelir.
Ücretsiz sürüm, özelliklerinin çoğu sınırlı olmadıkça veya Visual Studio başlatılmadıkça kullanılamaz, ancak Visual Studio yüklü olduğu sürece herkes kullanabilir. Ücretli sürüm, ücretsiz sürümde bulunmayan birçok güçlü gizleme özelliğine sahiptir, ancak genel halkın karşılaması zor bir fiyata sunulmaktadır.
Dotfuscator, sürüme bağlı olarak farklı özelliklere, fiyatlara ve sürümlere sahiptir, bu nedenle ayrıntılar için lütfen aşağıdaki ana sayfaya bakın.
Gizleme prosedürü
Daha önce .NET Framework ile oluşturulan uygulamaların orijinal kaynak kodunu sökebileceğini ve kolayca okuyabileceğini belirtmiştim, ancak asıl durum, exe dosyasını sağdaki şekilde gösterildiği gibi parçalara ayırırsanız, ad alanı, sınıf adı, yöntem adı gibi orijinal kaynak kodunu neredeyse yeniden oluşturabilmenizdir.
Bu adları kafa karıştırıcı ve karmaşık hale getirme adımlarını açıklar.
Visual Studio'da bir uygulama oluşturmak ve bir exe dosyası oluşturmak, onu oluşturmanın normal yolu ile tamamen aynıdır.
Exe dosyasını oluşturup oluşturduktan sonra, Visual Studio menüsünden Araçlar'ı ve ardından Dotfuscator Yazılım Hizmetleri'ni seçin.
İlk kez başladığınızda, sağdaki şekilde gösterildiği gibi "Lisans Sözleşmesi" iletişim kutusu görüntülenir, bu nedenle içeriği dikkatlice okuyun, "Evet, lisans sözleşmesini kabul ediyorum." seçeneğini işaretleyin ve "Tamam" düğmesini tıklayın.
Dotfuscator Yazılım Hizmetleri başlatılır.
Gizlenecek exe (veya dll dosyası) o anda açık olan projeden olmak zorunda değildir.
Soldaki ağaçtan Giriş Derlemeleri'ni seçin ve ... düğmesini tıklatmak için sağdaki Giriş Derlemeleri'ne tıklayın.
Gizlemek istediğiniz exe dosyasını seçin.
Seçilen exe dosyası listeye eklenir. Birden fazla dosyayı gizlemek istiyorsanız, eklemek için ikinci satırdan sonraki "..." düğmesini tıklayın.
Gizlemek istediğiniz exe dosyasını seçtikten sonra, araç çubuğundan Proje Oluştur düğmesini tıklatın.
Projede herhangi bir değişiklik varsa, proje kaydetme onayı iletişim kutusu görüntülenir, bu nedenle kaydetmek için "Evet" i tıklayın.
Projenin adı ". xml" dosyasını açın. Gizlenmiş exe dosyası da aynı konuma kaydedilir, bu nedenle .xml dosyasını herhangi bir klasöre kaydedin.
Yapı başlatılır ve tamamlanana kadar bekler. Program ne kadar büyük olursa, oluşturulmasının o kadar uzun sürdüğünü unutmayın. Sağdaki şekle benziyorsa, yapı tamamlanır.
İleti alanı, yapının ilerlemesi ve ne kadar gizlendiği gibi basit sonuçları görüntüler.
Soldaki ağaçtan "Sonuç"u seçerseniz, sınıf ve yöntem adlarının nasıl değiştiğine ilişkin ayrıntıları görebilirsiniz.
Sınıf ve yöntem adlarının altında, bir Dotfuscator simgesi ve gizlenmiş ad olan "a" veya "b" gibi bir ad vardır. Sınıf adını veya yöntem adını bunun gibi anlamsız bir adla değiştirerek, kaynak kodunun içeriğinin sökülmüş olsa bile okunmasını zorlaştırabilirsiniz.
Gizlenmiş exe dosyaları, Save Project'e kaydedilen ve "Dotfuscated" adı verilen .xml dosyaları klasöründe oluşturulur ve içinde oluşturulur. Exe dosyasına ek olarak, bir "Map .xml" dosyası oluşturulmuştur, ancak bu gizlemenin sonucudur ve kullanılmamalıdır.
Gizlenmiş exe'ler olduğu gibi çalıştırılabilir ve kullanılabilir. Ancak, sağdaki şekilde gösterildiği gibi bilinmeyen bir hata nedeniyle başlatılamadığı durumlar vardır.
Bu kez, WPF'de bir uygulama yazdım, ancak görüntülenecek ilk pencerenin XAML dosyası bir dize olarak belirtildiğinden, gizleme nedeniyle yeniden adlandırma başvurunun kaybolmasına neden olacak ve bir hataya neden olacaktır.
Windows Form uygulamaları doğrudan Kimden sınıfına başvurur, böylece gizlenmiş olsalar bile hatasız çalışabilirler. Ancak, bir sınıf adı, bir enum türü vb. adla belirtirseniz, aynı hatanın oluşma olasılığı olduğundan dikkatli olmanız gerekir.
Bir sınıfı veya başka bir şeyi gizlemek istemiyorsanız, Dotfuscator'un sol tarafındaki ağaçtan Yeniden Adlandır'ı seçin ve orta sekmeden Hariç Tut'u seçin.
Her ad alanı, sınıf adı vb. sağdaki listede görüntülenecektir, bu nedenle gizlemek istemediğiniz öğeleri kontrol edin.
Burada, önce görüntülenecek pencerenin sınıf adını değiştirmek istemiyorum, bu yüzden "MainWindow" u işaretliyorum.
Yapıyı yaptığınızda, MainWindows'ta sınıf adı altında değiştirilmiş bir ad olmadığını görebilirsiniz. (Uygulama sınıfı "a" ya dönüştürüldü)
Gizlenmiş exe dosyasını çalıştırdığınızda, pencerenin doğru görüntülendiğini görebilirsiniz.
Gizlenmiş exe dosyasını sökerseniz, sınıf adının ve yöntem adının düzgün bir şekilde "a" veya "b" olarak değiştirildiğini görebilirsiniz.
Ama bir kenara. NET Framework kitaplıkları gibi sınıf adları gibi yeniden adlandırmaya tabi değildir, çünkü bunlar Windows'ta ve başka yerlerde zaten yüklü olan derlemelerdir.
Bu sefer yaratılan varsayılan projeyi olduğu gibi gizledim, bu yüzden o kadar da gizlenmediğine dair bir imaj olduğunu düşünüyorum ama proje büyüdükçe sınıf sayısı vs. arttığı için gizlemenin etkisinin netleştiğini düşünüyorum.
Ayrıca, prosedürü bu sefer ücretsiz sürüme dahil etmemize rağmen, ücretli sürüm daha karmaşık gizlemeye izin verir ve ayrıca kendisinin sökülmesini önler. Bununla birlikte, gizlemenin çeşitli olumsuz etkileri ve ortaya çıkma potansiyeli vardır, bu nedenle gizleme yapıldığında, tasarımın başlangıcından itibaren düzgün çalışıp çalışmayacağını düşünürken bunu yapmak gerekir.