Dotfuscator kullanılarak oluşturulan uygulamaları gizleme

Sayfa güncel :
Sayfa oluşturma tarihi :

ö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.

Dotfuscator を使用して作成したアプリケーションを難読化する

Ç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.

Dotfuscator Software Services

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 Software Services

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.

難読化する exe ファイル

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.