Question

J'ai besoin d'offrir une période d'essai pour mon logiciel personnalisé. J'ai une application C # 64 bits, qui utilise des DLL de support multi-processeurs 64 bits. D'autres utilitaires à inclure sont écrits en C ++ (ex et DLL). Je dois être en mesure de crypter le code C #, de saisir le logiciel pour exécuter uniquement sur une machine particulière et d'appliquer une date d'expiration qui ne peut pas être déjouée en réinitialisant l'horloge machine.

J'ai évalué plusieurs solutions open source et COTS: Système d'octroi de licences d'infralisation, Protector et Exeshield pour n'en nommer que quelques-uns. Aucun d'eux ne satisfait toutes mes contraintes.

Quelqu'un est-il conscient d'une solution globale que je devrais considérer? Ou dois-je faire de la plongée de registre et l'appliquer via un code personnalisé?

Était-ce utile?

La solution

J'ai découvert au cours de plusieurs années à essayer de différents systèmes de licence qu'il existe une forte corrélation inverse entre la sécurité et l'aliénation de vos clients potentiels.

Il y a essentiellement deux types de piratage dont vous devez vous soucier. L'un est un piratage occasionnel - les utilisateurs utilisant le logiciel sans payer simplement parce qu'ils n'ont pas vraiment pensé payer. L'autre est un piratage délibéré - des gens qui sont déterminés à ne pas payer et qui sont prêts à faire de réels efforts pour ne pas le faire.

Le piratage occasionnel peut être manipulé avec ce qui se résume essentiellement à de doux rappels - clés d'activation, limites de temps, etc. Le piratage délibéré, en revanche, ne peut essentiellement pas être évité. Comme Sony, Apple, Microsoft, Nintendo et un certain nombre d'autres sociétés vous le diront, même lorsque vous bénéficiez du contrôle du matériel ainsi que du logiciel, votre schéma de protection sera être brisé. Et la personne qui le brise est aussi susceptible de le faire pour un défi amusant que pour le désir d'obtenir des logiciels libres. Donc, pour un certain groupe démographique, rendre la protection plus forte ne les décourage pas, elle fait tout le contraire.

Pendant ce temps, tout ce que vous faites pour essayer d'obtenir une protection solide est de conduire des utilisateurs légitimes sur le mur. Peut-être que le voyage pour détecter le gerrymandering avec l'horloge du système s'est déroulé parce qu'ils ont changé des fuseaux horaires. Ou peut-être qu'ils ont dû remplacer un mauvais disque dur ou un processeur ou quelque chose, et cela a déclenché le mécanisme de clonage du système. Ou peut-être que Microsoft modifie les paramètres de sécurité par défaut de Windows d'une manière qui fait que Windows fait éclater un gâchis d'avertissements UAC tandis que votre application est utilisée grâce à ne pas être amical avec une astuce que vous avez utilisée pour essayer de masquer le fichier qui stocke les données de licence. Au travail, nous utilisons une solution commerciale, et nous avons découvert que leur mécanisme de protection peut trébucher d'une manière qui, grâce à un bogue du logiciel, peut entraîner la corruption des données de licence, verrouillant ainsi l'utilisateur du programme. En raison de la façon dont leur système stocke ces données, c'est une situation irrécouvrable - le client doit littéralement choisir entre ne pas utiliser ce logiciel sur cet ordinateur à nouveau et essuyer le disque dur. Oui, c'est arrivé plusieurs fois. Oui, nous avons perdu beaucoup de revenus potentiels. Oui, je deviens nauséablit de penser aux dommages qu'il est causés parce que nous comptons principalement sur le bouche à oreille et il est généré beaucoup de mauvais bouche à oreille. Pour faire court, la paranoïa naïve sur le piratage des années précédentes m'a probablement coûté un certain nombre de vacances à la voile dans les Caraïbes.

Et le pire est, ce n'est qu'un problème pour les utilisateurs légitimes. Les craquelins peuvent facilement - douloureusement facilement - le contourner à l'aide de - si cela vient en dernier recours - un débogueur et un décompilateur. Si le logiciel est sur un appareil en possession de l'utilisateur final, vous pourriez aussi bien commencer à penser comme si votre logiciel était déjà fissuré. C'est au point qu'il existe une industrie cottage qui s'est construite autour de l'idée que les gens fissurent des logiciels qu'ils possèdent légitimement, juste pour éviter la gêne des mécanismes de protection logicielle. Ils vous donneront de l'argent, mais ils feront toujours craquer le logiciel parce que votre protection contre la copie est juste irritante et tout simplement facile à contourner. L'alternative - et c'est l'itinéraire que je suis allé - est d'aller simplement acheter différents logiciels moins ennuyeux ou d'utiliser des logiciels libres à la place.

Alors optez pour le minimum - regardez l'horloge et tirez le temps de la démo, car vous devez rappeler à vos utilisateurs de vous envoyer un chèque. Mais ne le faites pas d'une manière qui les fait décider qu'ils ne veulent pas vous donner un chèque. Si votre objectif est de convertir les ventes, considérez ceci comme le système le plus élégant, rentable et efficace pour empêcher les utilisateurs de violer votre période de démo en mordant avec l'horloge du système: c'est vraiment, vraiment irritant de travailler avec un ordinateur qui a le horloge définie à la mauvaise date. Et c'est juste pour les utilisateurs à domicile. Pour les entreprises (légitimes), ce n'est même pas une option réalisable. Et quiconque n'est pas dissuadé par cela est probablement un script Kiddie qui n'avait jamais vraiment les moyens de payer pour votre logiciel en premier lieu.

Autres conseils

Utilisation http://xheo.com/ produits pour cela. Ils offrent un code Obfiscator qui est idéal pour protéger le code et une plate-forme de licence qui peut faire tout ce que vous imaginez jamais. Ils offrent une version qui peut être compilée dans votre code.

Crypter - http://xheo.com/products/code-protectionLicence - http://xheo.com/products/copy-protection

Pourquoi ne pas simplement utiliser l'heure à partir d'une source Internet, comme www.time.gov? Vous pouvez plier une application C ++ QT et utiliser leur bibliothèque Qtwebkit, http://doc.qt.nokia.com/4.7/qtwebkit.html, pour télécharger l'heure. (Je n'ai jamais rien fait de tel, mais en regardant la documentation, cela semble prometteur.) La première fois que le programme s'exécute, vous créez un petit fichier avec un horodatage, ou, pour encore plus de sécurité, écrivez l'horodatage dans un DLL essentiel et le recompiler. Cela est vérifié chaque fois que le programme est exécuté. Si vous n'êtes pas connecté à Internet, vous les avertissez plusieurs fois, mais finissez par interrompre la charge.

Une autre variation à ce sujet, utilisée par de nombreux packages logiciels, je pense, est que vous stockez la date à laquelle l'utilisateur commence à utiliser votre logiciel ton serveur. Recompilez le programme pour chaque utilisateur (vous pourriez être en mesure de scripter cela) avec un code spécifique à l'utilisateur, et le programme se vérifie par rapport à la date stockée sur le serveur à chaque fois qu'il est chargé.

Comment peut-il être stocké de manière à être irréalisable? Les inscriptions et fichiers de registre peuvent être supprimés. Les flux de données alternatifs ne sont pas fous dans un fichier zip, donc si vous connaissez le fichier qui contient les annonces qui contient les données d'installation du logiciel (qui est utilisée pour référencer l'heure actuelle pour calculer les jours depuis l'installation), vous Peut simplement le compresser dans un fichier zip puis l'extraire à nouveau et byebye à la référence de date d'installation. Stockez-le sous forme de données brutes sur le disque dur (non référencé dans la table d'allocation de fichiers en tant que fichier) et il sera écrasé lorsqu'un fichier sera enregistré à cet emplacement sur le Dard Drive.

Je ne vois donc littéralement pas un moyen de rendre impossible la date d'installation d'essai pour CopyProtection. Cela ne peut tout simplement pas être fait.

Une meilleure idée est peut-être de donner, gratuitement, une application plus petite qui n'a que des fonctionnalités minimes. Les clients paient ensuite pour des fonctionnalités supplémentaires ou des modules complémentaires.

Dans ma demande, les gens ont suggéré d'offrir plus de données moyennant des frais. L'application serait gratuite avec un minimum de données. Une autre idée consiste à suivre la voie des frais d'abonnement pour l'accès avancé aux données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top