Bonjour à tous,
j'ai fini une application en C# et je souhaite le publier en version d'essai pour des éventuels client. Alors je souhaiterais avoir un coup de pouce sur comment procéder. Merci d'avance.
Version imprimable
Bonjour à tous,
j'ai fini une application en C# et je souhaite le publier en version d'essai pour des éventuels client. Alors je souhaiterais avoir un coup de pouce sur comment procéder. Merci d'avance.
Une version pour essayer juste quelques fonctionnalités ou une version limitée dans le temps (30 jours par ex)??
Oui une version limitée dans le temps (30 jours par exemple)!
Je crois bien que c'est dans le registre sa donc tu dois écrire dans le registre
c'est à toi de coder ca, et la méthode dépend du niveau de sécurité que tu veux mettre
car si tu stockes quelque part la date d'installation (base de registre ou ailleurs) et que tu testes que la date d'exécution est inférieure à 30 jours c'est simple à contourner
ca dépend aussi de si tu peux exiger un accès à internet ou non ...
m'enfin un programme .net est facilement piratable dans tous les cas
Comme à dis Pol63 c'est à toi de coder le truc et aussi c'est vulnérable si tu écrit dans le Registre ou un fichier accessible à l’extérieur de l'application, car une personne tiers peut le modifier.
Ce que je te propose est de créer un compteur à l’intérieur de ton application et qui s'incrémente tous les jours (+1) à partir de la date d'installation de ton application.
Ou utiliser un logiciel de création de setup comme InnoSetup ou autres similaires.
Mais rassure toi que des logiciels de renomées mondiale ont été cracké.Donc....:ccool:
Alors comment tester l'application au premier lancement. Voila un peu ce que je veux faire:
-> récupérer la date au 1er lancement (Comment le faire?);
-> Crypter cette date et la stoker dans le registre (Comment le faire?);
-> A chaque nouveau lancement, récupérer la date cryptée dans le registre, la décrypté et comparé la différence avec la nouvelle date de lancement à 30 jours;
-> Permettre ou non le lancement ou afficher un message selon le résultat (=< 30);
-> Enlever cette restriction lorsque la licence est acquise (Comment le faire?) comme le cas de kaspersky anti-virus).
Voilà en gros ce que je veux faire.
Merci d'avance.
Salut,
-> récupération date :pour savoir si c'est le premier lancement, cherche si cette date est déja stockée (dans le registre ou autre)Code:DateTime.Now
-> Cryptage : http://support.microsoft.com/kb/307010/fr
->
->
-> un bête test avant ton test de date
PS : ouaiiii ct mon 200ème message :DCode:
1
2
3
4
5
6 if (!Enregistre) { if (DateTime.Now.AddDays(-30) > MaDateStockeeDecryptee) Application.Exit(); }
Bonjour,
Je ne sais pas comment on fait en C#, mais en VB.net je faisCitation:
Envoyé par Le gris
oùCode:My.Computer.Registry.SetValue("noeud", "ma_clé", "ma_valeur")
"noeud" = par exemple, "HKEY_CURRENT_USER\Software\nom_de_mon_logiciel"
"ma_clé" = "date"
"ma_valeur" = la date cryptée de la première installation
Pour récupérer "ma_valeur", j'écris
où defaultvalue = Nothing dans mon casCode:My.Computer.Registry.GetValue("noeud", "ma_clé", defaultvalue)))
C'est donc simple comme bonjour.
Le hic ... est que le cryptage n'empêche pas la suppression ...
L'utilisateur peut supprimer cette clé ...
Comment ton programme va-t-il contrer cette "attaque" ?
Ton programme ne va-t-il pas croire, alors, qu'il s'agit de la première installation ? ...
A mon sens, la seule vraie protection consiste à empêcher l'utilisateur de modifier et de supprimer, c'est-à-dire hors de son ordinateur ... ou hors de l'espace du serveur où il a les droits de modification et de suppression
Bref, une application sécurisée ne devrait se lancer que connectée à un serveur où l'utilisateur n'a que des droits en lecture.
Ceci dit, si l'utilisateur ne peut ni modifier, ni supprimer, il ne sert plus à rien de crypter ...
Quel est l'avis des autres participants à ce forum ?
le problème c'est que stocker cette information dans l'assembly en cours c'est un peu comment dire... difficile, car il faudrait pouvoir modifier l'assembly en cours de fonctionnement, ce qui est d'office rejeté, et je te dit pas la régénération dynamique que ca imposerait :)
en fait il faut envisager soit de passer par un lib native win32, soit d'obfusquer le code, et de passer par une dll externe, fournie d'office avec le système, mais qui ne contient pas la date, cette lib tu peux la reconstruire à la volée avec les infos dont tu as besoin pour déterminer si la date est échue, pour peu que tu la charge dans un domaine d'application autre que ton application en cours, mais dans un sous domaine...
mais bon là il faut déjà être à l'aise avec la génération de code dynamique :)
D'autant que si tu veux être sadique, tu utilise le code généré, pour forcer la dépendance, donc d'office, si le gars il te la supprime, il a tout faux.
Et si t'est pas la moitié d'un sauvage tu peux envisager d'inclure en ressource de ton exe principal un certificat pour définir un strong-name sur ta lib dynamique au moment de la compilation :) mais là c'est carrément du sadisme et question développement... ba disons le... c'est un peu gore quoi :)
Afin d'immuniser ton exécutable principal contre des modifs (patch) pour justement zappé la partie qui contrôle le temps, par une assembly annexe, il est indispensable de compiler ton application avec un Strong Name, donc de signer numériquement l'assembly.
cela rend ton code exécutable sure, au sens où toute modification sera détectée par la CLR, et l'application ne se lancera pas.
C'est la solution utilisée dans Microsoft Expression Blend, et à part des sérial, il n'y a pas à ma connaissance de vrai crack qui casse cette sécurité.
Bon là je me suis volontairement "enflammé"... disons le franchement cette solution est extrêmement difficile à mettre en oeuvre, et sort ouvertement des limites de l'aide que tu peux obtenir ici...
il te faut pour cela, lire la doc msdn sur la réflexion et génération de code dynamique et tout particulièrement sur System.Reflection.Emit, et également lire la doc sur le MSIL... là je te conseil, un wagon d'aspro et un semi de prosac si t'est encore "chaud".
Je ne saurais trop te déconseiller cette solution, mais bon, il semblait intéressant d'en parler dans la mesure où c'est du domaine du possible.
Dans tous les cas, c'est uniquement fait pour décourager le premier venu de passer outre, mais si la personne en face s'en donne réellement la peine, il trouvera la faille.
Il existe des outils logiciels pour faire ce genre de chose. Le faire à la main c'est un peu du bricolage
disons que les solutions existent, mais la question est... veut-il mettre le prix :)
Et quand on ne peut pas mettre le prix alors on bricole :)
Je miserais quand même plus sur la signature d'un contrat de prêt de 30 jours et une mise en relation de confiance avec le client que sur ce genre de solution technique.
Disons que ce genre de solution est utile quand un soft commence à prendre pleins de part de marché mais là manifestement il vient juste de finir le soft..
disons le tout net, j'en ai la tête qui tourne :calim2:! Cela dit, puis-je avoir les noms des soft payant qui me permettrons de le faire?
Que pensez vous des keyGenerator?
Merci dans tous les cas.
Bonjour,
C'était une très bonne question à mon avis. Ca permet de simplifier grandement le traitement.
Il y a juste a écrire la date d'installation sur un endroit d'internet et le tour et joué. (A quelques petits détails près).
Après en local c'est un peu plus dure de faire une vrai sécurité qui tienne la route.
Pour le local je penserai plutôt à un système de clé cd. Si c'est possible.
ba des numéros de séries à coucher dehors comme les clés CD pour les logiciels que tu achète, ou les jeux...
tu sais ces numéros en xxxx-xxxx-xxxx ....
alors pour les amateurs en règle général ces numéros sont générés via des algorithmes à base de cryptographie avancée...
et contrairement aux croyances, si l'algorithme est bien implémenté, le fait de voir le code n'y fera rien...
vive les ECC qui ont quand même donné du fil à retordre à tous les petits malins qui voulaient faire un keygen pour winrar...
Ok je vois! Je fais une recherche dans ce sens et je vous tiens au courant.
Merci pour tout!