Domanda

Questo riguarda le chiavi SafeNet/Aladdin Sentinel HASP.Ho pubblicato sul loro sito, ma nel caso in cui qualcun altro conosca la risposta o trovi utile la risposta, la scrivo anche qui.

Secondo la documentazione fornita da SafeNet in "Software Protection and Licensing Guid.pdf" dovremmo mantenere segreto il nostro codice fornitore, giusto?

Bene, se creo l'esempio fornito in "\Samples untime\csharp\", quindi proteggo l'app con Envelope, quindi decompilo l'app Enveloped in JetBrains dotPeek, posso vedere la stringa del codice fornitore molto facilmente.Sembra che Envelope non offuschi le stringhe const.O forse sono stringhe a livello di classe, non lo so.

È questo il modo consigliato di utilizzare il codice fornitore?Non sembra molto segreto.Se inserisco la stringa del codice fornitore in una variabile temporanea in una funzione, viene offuscata.È così che dovrebbe essere fatto?In tal caso, il codice di esempio non dovrebbe rifletterlo?

Grazie.

È stato utile?

Soluzione

Avevamo notato la stessa cosa.La ragione const le stringhe non sono offuscate è probabilmente dovuto al fatto che una variabile const è a costante di tempo di compilazione, che consente al compilatore di sostituire i riferimenti ad a const variabile con il valore costante stesso in fase di compilazione.Quindi fondamentalmente non c'è const campo stringa da offuscare prima dell'avvio del processo di enveloping.(Ciò non è del tutto vero: la definizione di const viene mantenuto nell'IL, ma solo a scopo di documentazione;non è referenziato da alcun codice.)

Il modo in cui abbiamo affrontato questo problema è utilizzando static readonly stringhe, inizializzate in a static costruttore.In questo modo si memorizzano i valori della stringa come costanti di runtime, consentendo al processo di inviluppo di accedervi correttamente per l'offuscamento.(Ciò viene verificato decompilando l'assembly, come hai detto.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top