2010-12-12 27 views
1

Je me demande s'il est possible de masquer certaines chaînes de votre code source dans le fichier d'assemblage généré. Mon but est de créer une somme de contrôle en utilisant de la corde de sel et je voudrais que la chaîne de sel de hardcode dans mon assemblée évite que la chaîne soit visible au cas où quelqu'un désassemblerait mys ddl. Je ne suis pas intéressé par une obfuscation de l'ensemble complet, seulement quelques chaînescomment masquer une seule chaîne dans l'assemblage .net

+0

Ne pensez pas que masquer seulement une partie est utile. Le gros problème de l'inversion est la taille de la botte de foin dans laquelle vous cherchez l'aiguille. Pour casser ce que vous indentez de faire, je trouverais juste le code où vous utilisez le sel, mettez un point d'arrêt dessus et vérifiez quelle valeur il a après avoir désobscuqué la chaîne. – CodesInChaos

+0

Générez-vous une somme de contrôle ou un hachage cryptographique? Si c'est une somme de contrôle, un attaquant peut facilement obtenir le sel; Si c'est un hachage cryptographique, le sel n'a pas besoin d'être secret. Pouvez-vous expliquer pourquoi vous devez garder le secret du sel? –

+0

Je devine pour détecter la trempe des fichiers de données. Les meilleurs scores locaux de jeux me viennent à l'esprit comme une application. Évidemment, un attaquant expérimenté peut les manipuler, mais cela empêche quelqu'un qui sait comment utiliser un éditeur hexadécimal. – CodesInChaos

Répondre

0

Est-ce important? Le désobfuscateur devrait aussi être intégré dans votre assemblage, sinon vous ne pourriez pas récupérer la chaîne. Quelqu'un qui regarde votre assemblée aurait seulement besoin de courir le désobfuscateur pour obtenir votre chaîne de sel. Si vous voulez vraiment cacher une chaîne, placez-la dans un assemblage natif.

+0

"assembly natif" voulez-vous dire créer un assemblage en C++ au lieu de C# qui contient un ensemble de chaînes que j'aimerais conserver et utiliser l'assembly/string de mon assembly C#? – Crixo

+0

Oui. Vous pourriez même envisager d'exécuter votre fonction de hachage dans la DLL native et d'utiliser 'SecureString' dans .NET afin qu'il ne soit pas visible en mémoire. –