Dotfuscator Kullanılarak Oluşturulan Uygulamaları Gizleme (Visaul Studio 2022 Sürümü)

Sayfa güncel :
Sayfa oluşturma tarihi :

özet

.NET serisi çerçeveleri temel alan uygulamalar, ortak bir ara dil olarak adlandırılan dilde oluşturulur, böylece 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 ücretsiz sürümünü kullanarak sınıfların ve yöntem adlarının kolayca okunamayan biçimlere nasıl gizleneceği açıklanmaktadır.

Visual Studio 2022 kullanılarak açıklanmıştır, ancak Dotfuscator'un diğer sürümlerinde de kullanılabilir.

Çalışma Ortamı

Görsel Stüdyo
  • Visual Studio 2022 (İngilizce)

Dotfuscator Hakkında

Dotfuscator, .NET çerçeve ailesiyle (bundan böyle .NET olarak anılacaktır) yazılmış uygulamalar için demonte edildiğinde kaynak kodunun okunmasını 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.

Sökme Hakkında

Daha önce .NET ile yazılmış uygulamaların orijinal kaynak kodunu kolayca parçalarına ayırıp okuyabileceğinden bahsetmiştim, ancak gerçekte olan şey, aşağıdaki şekilde gösterildiği gibi bir .exe dosyasını (veya .dll dosyasını) sökerseniz, ad alanı, sınıf adı, yöntem adı vb. gibi orijinal kaynak kodunu neredeyse yeniden oluşturabilmenizdir.

Gizlenmesi gereken program türleri

Temel olarak, belirtilmemiş kullanıcılara dağıtılan ve çalıştırılan programlar için geçerlidir. Örneğin, masaüstü uygulamaları. Tersine, program dosyalarına doğrudan erişmekte zorluk çeken Web uygulamaları gizleme için daha az önemlidir.

Bu kez, bir masaüstü uygulaması olan WPF'deki bir projeye bakıyoruz.

Dotfuscator'u Yükleme

Bu uygulama Visual Studio 2022 ile birlikte gelir, ancak standart yüklemeye dahil değildir (bazı geçmiş Visual Studios'larda sıfırdan yüklenebilir).

Dotfuscator eklemek için: Visaul Studio'yu başlatın ve Araçlar'dan Araçları ve Özellikleri Al'ı seçin.

Yukarıdaki sekmeden "Bireysel Bileşenler" i seçin, "Kod Araçları" grubunda "PreEmptive Protection - Dotfuscator" u işaretleyin ve sağ alt köşedeki Yükle düğmesini tıklayın. Bunu yaparken Visual Studio konsolunu kapatın.

Gizleme prosedürü

Bu adları kafa karıştırıcı ve karmaşık hale getirme adımlarını açıklar.

Visual Studio'da bir uygulama oluşturun, .exe dosyası oluşturun ve ardından . Bir dll dosyası oluşturun. Şimdiye kadar, bu normal bir uygulama oluşturmakla aynıdır. Oluşturduğunuz uygulama, Sürüm derlemesinde oluşturulanlara yönelik olmalıdır. (Çünkü genellikle Hata Ayıklama'da yayımlamazsınız.)

.exe veya .dll oluşturduktan sonra, Visual Studio menüsünden Araçlar'ı seçin ve ardından Önleyici Koruma - Dotfuscator Topluluğu'nu seçin.

Kayıt ekranı görüntülenir, ancak gerekli değildir, bu nedenle gereksizse, iptal düğmesine olduğu gibi tıklayın.

Kalın ve Tamam düğmesine tıklayın.

Dotfuscator başlar. Uygulama kendi başına çalışır, böylece o anda açık olan projeyle ilgili olmayan dosyaları gizleyebilirsiniz. (Uygulamanın kendisinin ücretsiz sürümü söz konusu olduğunda, Visual Studio'nun başlatıldığı varsayılır.) )

Bu makalede, örnek olarak varsayılanlarla oluşturulmuş bir .NET 6.0 WPF uygulama projesini gizleyeceğim.

Soldaki listeden "Giriş" i seçin ve "+" düğmesini tıklayın.

Gizlemek istediğiniz program dosyasını seçin. .NET Framework'te yazılan uygulamalar genellikle .exe gizlemiştir, ancak .NET ve .NET Core'da programlar genellikle varlıklar .dll. NET WPF uygulamalarının da .dll varlıklara sahip olacağından, .dll'ı seçin.

Listeye eklenecektir. Birden çok DLL'den oluşuyorsa, birden fazla DLL ekleyin.

Hedef dosyayı ekledikten sonra, araç çubuğundan "Oluştur" düğmesini tıklayın.

Gizlenmiş proje dosyasını nereye kaydedeceğiniz sorulur, bu nedenle belirtin. Konum rastgele olabilir, ancak gizlenmiş bir programın çıkış konumu da olabilir. Girişinizi kaydeder ve tekrar gizlemek isterseniz bu gizleme proje dosyasını açar. Uzantı ". xml".

Yapı başladıysa ve aşağıdaki iletide "Yapı tamamlandı" görüntüleniyorsa, başarıyla tamamlandığını gösterir. Ekran, yapı günlüğünü ve gizlenmiş sınıfların ve değişkenlerin bir listesini görüntüler.

Sınıf ve yöntem adlarının nasıl değiştiğine ilişkin ayrıntıları görmek için soldaki listeden "Sonuç"u seçin.

Sağdaki ağaçta yer alan "->" gibi sınıf adları ve yöntem adları, gizlemeden sonraki adlardı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ş programlar, proje dosyasını kaydettiğiniz yerde "Dotfuscated" adlı bir klasöre kaydedilir.

Map.xml bir gizleme sonuç dosyasıdır, böylece dosyayı güvenle silebilirsiniz.

.NET 6.0 WPF tek başına bir DLL tarafından başlatılamadığından, derleme çıktısı sırasında oluşturulan "XXXX.exe" ve "XXXX.runtimeconfig.json" dosyalarını aynı klasöre kopyalayın ve başlatın. Normal bir şekilde başlayabilirseniz, şu an için bir sorun yoktur. Başlatamıyorsanız, dosyalar eksik olabilir veya gizleme nedeniyle tutarsız hale gelen bir program oluşturuyor olabilirsiniz.

Gerçekten gizlenmiş olan programı analiz ederseniz, bazı gizleme izleri göreceksiniz. Aşağıdaki şeklin ilk sayfası gizlemeden önce, ikincisi ise gizlemeden sonradır.

.NET kitaplıklarında tanımlanan sınıf adlarının, çerçeve olarak var oldukları için yeniden adlandırmaya tabi olmadığını unutmayın.

Bu kez, olduğu gibi oluşturulan varsayılan projeyi gizledim, bu yüzden neredeyse gizlenmemiş bir görüntü olduğunu düşünüyorum, ancak gizlemenin etkisinin netleştiğini düşünüyorum çünkü proje ne kadar büyükse, o kadar benzersiz sınıflar artacaktır.

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.

Gizlemeyi hariç tutma

Gizlemek istemediğiniz sınıf veya özellik adlarınız varsa, bunları hariç tutabilirsiniz.

Derleme yüklenirken, ekranın sol tarafından > Yeniden Adlandır'ı seçin. Montajın içeriği görüntülendiğinden, gizlemek istemediklerimi kontrol edeceğim.

Gizlemeyi ayrıntılı bir düzeyde hariç tutmak mümkündür, ancak ad alanı temelinde ayarlamanın daha kolay olduğunu düşünüyorum.

Kütüphane Modu

Giriş derlemesini seçtiğinizde, "Kütüphane Modu" nun işaretli olduğunu görebilirsiniz.

"Kitaplık modu", diğer programlar tarafından çağrılabilecek DLL'lere eklenmektir. İşaretlenirse, diğer programlar tarafından çağrılan ortak sınıflar ve özellikler gizleme dışında tutulur.

Bununla birlikte, genel olarak, diğer programlardan üretken olarak adlandırılan bir kitaplığı ortaya çıkarmak nadirdir ve bunun genellikle tek başına çalışan uygulamalara gizlendiğini düşünüyorum, bu nedenle bu denetimi temel olarak kaldırmak sorun değil.

Tek dosyalı .exe gizlenmesi (onaylanmamış)

Visual Studio 2022'de bu öğeyle ilgili araştırmalar şu anda doğrulanmamıştır.

Muhtemelen MSBuild ile gizleme olacak, ancak şu anda bilgi eksikliği nedeniyle beklemeye alıyorum.