2009-01-30 7 views
4

Pour C# dans un environnement winForms, j'ai mis sous licence mes classes en écrivant des détails sur le regestry, cryptés.Comment voulez-vous autoriser votre code Mono?

Sous Mono, certaines installations ne sont pas disponibles. Le registre en fait partie. Quelle méthode utiliseriez-vous pour autoriser votre code sous Mono?

Je ne veux pas qu'un utilisateur malveillant puisse supprimer le répertoire de l'application, réinitialiser le minuteur d'essai ou copier un fichier .LIC et avoir soudainement accès au programme.

Toutes les idées seraient appréciées.

+0

Bonne question. Je n'ai aucune idée, mais je suis intéressé à voir quelles réponses vous obtenez. – MusiGenesis

+0

Pourquoi un fichier crypté sous mono serait-il moins sécurisé qu'une clé de registre cryptée? – andynormancx

+0

Andy: Principalement parce que l'utilisateur moyen pour lequel j'écrirais les applications ne connaîtrait pas le fonctionnement de CLSID, donc ne trouverait pas la clé pour le supprimer. Je pourrais faire quelque chose de similaire en enterrant un fichier sous/var ou une bibliothèque système, mais cela semble bidouille ... bien que je ne sois pas contre le hack. – Jerry

Répondre

1

Le registre est disponible à l'aide des classes de registre standard .Net. Vous pouvez y écrire vos valeurs cryptées et les récupérer plus tard. Cependant, le registre sur Linux est juste un fichier dans le répertoire personnel de l'utilisateur, donc ce que vous ne pouvez pas vraiment faire est de le modifier de l'extérieur de Mono, comme d'un .msi (par exemple, .msi ne le font pas existe sur Linux).

+0

J'ai lu que Mono meurt si vous essayez d'utiliser une classe RegistryKey. Est-ce pas vrai ??? – Jerry

+0

L'avez-vous essayé avec la dernière version mono? :) –

+0

Le support pour le registre a été en Mono depuis environ deux ans maintenant. Si Mono meurt en l'utilisant, merci de déposer un bogue car cela doit être corrigé. – jpobst

2

Tout type de licence de certificat cryptée doit être au moins aussi sûr sur Mono que sur Windows. Déployez l'application sans le certificat. S'il ne détecte pas le certificat, c'est en mode 'fonctionnalité réduite'. Si c'est le cas, alors c'est en 'mode complet'. N'émettre que le certificat à l'achat. Pour les tests à durée de vie limitée, vous rencontrez un problème plus important, mais à la fin de la journée, rien n'empêchait l'utilisateur de jouer avec son registre, même si votre application fonctionnait sur une machine virtuelle ou sur un système. Restaurer libéralement.

1

Vous pouvez toujours crypter un fichier basé sur le CPUID et le stocker dans le répertoire. Je ne sais pas comment stocker un fichier sur le disque dur est différent de stocker quelque chose dans le registre. Un utilisateur peut toujours trouver la clé de registre l'exporter/importer au besoin. Il ne sera limité à cette machine que si vous utilisez les informations CPUID ou Motherboard pour crypter les données.