2014-09-25 29 views
7

Próbuję zaciemnić projekt .net za pomocą eazfuscator.net. Problem polega na tym, że kiedy dekompiluję go za pomocą .NET Reflectora, widać znaczną część kodu. Wszyscy członkowie prywatni są zaciemniani, ale członkowie publiczni udzielają wielu informacji na temat programu.Członkowie społeczności eazfuscator nie są zaciemniani

Czy można również zaciemnić publicznych członków mojej biblioteki? Wiem, że nie robi tego program, ponieważ członkowie publiczni są zwykle dostęp z innych zgromadzeń. Ale czy nie powinno być możliwe zaciemnienie całego rozwiązania, tak aby dostęp z innych zespołów również został zmieniony z tego narzędzia?

Próbowałem już używać ObfuscationAttribute

[assembly: Obfuscation(Feature = "Apply to type * when public: renaming", 
         Exclude = false)] 

ale to nie miało żadnego znaczenia.

Czy można zrobić coś takiego za pomocą eazfuscatora lub innego narzędzia?

Odpowiedz

3

Ogólnie rzecz biorąc, obfuscators nie będą zamazywać członków publicznych/chronionych.

Robią to z jakiegoś powodu, załóżmy, że masz publicznego członka w zespole (powiedzmy dll). Zwykle tworzone są zespoły do ​​udostępniania kodu, a jeśli obfuscator zmienił nazwy członków i klas? Jak to będzie działać, gdy od tego zależy inny zespół?

Jeśli w ogóle chcesz zaciemnić klasę, dlaczego na pierwszym miejscu jest public? Zawsze można go ustawić jako internal, jeśli nie jest przeznaczony do użycia poza złożeniem.

Oblucsatory dobrze radzą sobie z wewnętrznymi typami/członkami. Nie tylko zaciemni członków klasy, ale pójdzie o krok dalej, aby zmienić nazwę samej klasy.

Możesz rozważyć użycie Phoenix protector. Mam nadzieję, że można je również zaciemnić.

Aktualizacja:

Jedną z opcji jest, aby połączyć wszystkie zależne zestawy do jednego gigantycznego montażu (EXE), a następnie zaciemniać scalony zespół z zaciemniać członkach publicznym opcję. W ten sposób możesz zaciemnić członków publicznych jednocześnie niczego nie łamiąc.

+0

Tak więc protektor Phoenix jest konfigurowalny również dla członków publicznych, ale również łamie funktionalność, ponieważ istnieją podzespoły zależne od tej biblioteki. Po prostu pomyślałem, że powinno być możliwe zaciemnienie tych zestawów, tak aby nazwy w obu zespołach zostały zmienione w taki sam sposób, aby program działał. –

+0

@DanielWaidele Nie sądzę, że dostaniesz taką funkcję w bezpłatnych narzędziach do zaciemniania. Możesz go zdobyć w komercyjnych narzędziach, choć nie jestem tego pewien. –

+0

Możesz rozważyć połączenie wszystkich zespołów z jednym, a następnie zaciemnić członków publicznych. –