2014-09-25 15 views
7

Sto cercando di offuscare un progetto .net con eazfuscator.net. Il problema è che, quando decompilo usando .NET Reflector puoi vedere gran parte del codice. Tutti i membri privati ​​sono offuscati, ma i membri pubblici danno molte informazioni sul programma.membri pubblici di eazfuscator non offuscati

E 'possibile anche offuscare i membri pubblici della mia biblioteca? So che questo non viene fatto dal programma perché ai membri pubblici di solito si accede da altri assembly. Ma non dovrebbe essere possibile offuscare l'intera soluzione in modo che anche gli accessi da altri assembly vengano rinominati dallo strumento?

Ho già cercato di usare il ObfuscationAttribute

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

ma non ha davvero fare alcuna differenza.

Quindi è possibile fare qualcosa del genere con eazfuscator o forse un altro strumento?

risposta

3

In generale, gli offuscatori non offuscano i membri pubblici/protetti.

Lo fanno per un motivo, si supponga di avere un membro pubblico in un assembly (diciamo una dll). Di solito gli assembly vengono creati per condividere il codice, cosa succede se l'obfuscator ha cambiato i nomi di membri e classi? Come funzionerà quando un altro gruppo dipende da questo?

Se si vuole offuscare una classe, perché è public al primo posto? È sempre possibile renderlo internal se non è destinato a essere utilizzato all'esterno dell'assieme.

Gli Obfucsator sono utili per la gestione di tipi/membri interni. Non solo offusca i membri della classe, ma farà un ulteriore passo avanti per rinominare la classe stessa.

È possibile considerare l'utilizzo di Phoenix protector. Spero che sia configurabile per offuscare anche i membri pubblici.

Aggiornamento:

Una possibilità è quella di unire tutti i assembly dipendenti ad un unico gruppo gigante (exe), quindi offuscare il gruppo fusa con offuscare membri pubblici opzione. In questo modo, puoi offuscare i membri pubblici allo stesso tempo senza rompere nulla.

+0

Quindi la protezione di Phoenix è configurabile anche per i membri pubblici, ma si rompe la funktionality, perché ci sono assembly che dipendono da quella libreria. Ho solo pensato che sarebbe stato possibile offuscare questi assembly insieme in modo che i nomi in entrambi gli assembly venissero cambiati allo stesso modo in modo che il programma funzioni. –

+0

@DanielWaidele Non penso che otterrai questa funzionalità negli strumenti di offuscamento gratuiti. Si può ottenere in strumenti commerciali, anche se non sono sicuro. –

+0

È possibile considerare l'unione di tutti gli assembly in uno e quindi offuscare i membri pubblici. –