Je suis un nouveau développeur de logiciels et je souhaite vendre mon logiciel. J'ai récemment compris que du code C++, nous ne pouvons pas arrêter l'utilisateur de voir des parties du code qui sont liés à des scripts ou des commandes système.
Souhaitez-vous des commentaires sur la manière dont le logiciel écrit en C++/Java (distribué via des CD-ROMs ou Disponible via Télécharger) est protégé de l'ingénierie inverse, des scanners pour le moment où le code est en mémoire et une copie directe des pièces (comme commandes système).
Quelle petite entreprise de logiciels qui vient de commencer à produire des logiciels devrait faire pour protéger son produit du point de vue technologique (il ne devrait pas être en mesure de payer des frais juridiques ...)?
J'ai écrit des logiciels depuis de nombreuses années et il y a 2 décennies, j'avais l'habitude de penser dans les lignes que vous décrivez et essayez de travailler des moyens de protéger mon logiciel.
Pour répondre à votre question: la protection du logiciel est effectuée via le cryptage et l'obfuscation, comme la protection des données. Les déficits, comme vous l'avez décrit, c'est que beaucoup de code est très difficile à protéger et généralement relativement facile à ingénierier inverse.
Une façon de protéger votre code (à partir de décompilation) consiste à ne jamais publier une version compilée de celui-ci et à l'exécuter toujours à partir d'un serveur et vos consommateurs utilisent un client tel qu'un navigateur. Cela ne vous protège pas de l'ingénierie inverse.
La défense, à mon avis, est de ne pas gaspiller des cycles (heure/argent) essayant de protéger votre code, mais plutôt d'innover en permanence et d'ajouter plus de valeur à votre produit au fil du temps. Si un concurrent a obtenu votre code et a pris (dire) 1 mois pour la décompiler et a publié un produit concurrent, vous devriez avoir une étape d'avance sur votre prochaine fonctionnalité ou prochain produit à ce moment-là.
Passer du temps et des efforts pour bloquer votre concurrence en gardant tout le secret pour que votre équipe soit mieux dépensée en encourageant votre équipe à innover et à rester en avance sur la concurrence.
À mon avis, avant de demander comment, vous devriez demander s'il est nécessaire et/ou de la peine.
Je pense dans de nombreux cas, ce n'est pas le cas.
Les gens sont (naturellement) assez paranoïdes à propos d'autres personnes volant leur codez. Mais cette peur est-elle rationnelle? Je pense que ça n'est généralement pas.
Votre application est-elle vraiment si géniale que quelqu'un irait à la peine d'ingénierie inverse? (Désolé, mais probablement pas - comme vous l'avez dit, vous êtes un nouvea développeur. Et même si vous n'étiez pas ... il y a beaucoup de devs très talentueux)
Inverserait l'ingénierie (au point d'obtenir un code source utilisable et complet) sera tellement plus facile que d'écrire un produit concurrent? (Très probablement pas)
Dans quelle mesure pensez-vous qu'un tel programme serait? (Probablement pas très)
Il y a beaucoup, beaucoup de choses à craindre avant d'avoir à se soucier de la protection contre les artistes articulés. Ce n'est pas le moins d'obtenir un produit viable et attrayant sur le marché en premier lieu.
Pour l'exhaustivité ", je devrais ajouter qu'il existe évidemment de bonnes raisons d'essayer de protéger certains types de logiciels, ou certaines parties de nombreux logiciels communs, mais en général, je pense que essayer de protéger votre code est principalement une perte de temps mieux dépensée pour rendre le produit mieux.
À moins que votre logiciel ne soit assez sournois en interne, je suis sûr qu'un programmateur compétent pourrait reproduire le comportement de vos programmes à peu près au même moment que vous avez pris pour l'écrire!
Donc, dépenser beaucoup d'efforts pour garder votre code secret consiste généralement à perdre du temps et des efforts.
Certains algorithmes doivent être gardés secrets par exemple, l'algorithme de classement de Google n'est utile que si les escrocs ne savent pas comment promouvoir une page de déchets en haut de la recherche ou, un système de trading automatisé pouvant être manipulé par un concurrent. Mais cette situation est assez rare.
Les géants logiciels comme SAP et Oracle vendent de nombreux packages en fonction du fait que tout le monde sait exactement ce qu'ils font; "Compilance GAAP" ou "incarne la meilleure pratique commerciale" dans le marketing parle.
Mais ne perdez pas le cœur, les tests sont au moins 50% des efforts de programmation et ajoute probablement 80% de la valeur; Vous ne pouvez pas inverser l'ingénieur un ensemble décent de tests.
Cette question dépend beaucoup de savoir qui sont vos clients.
Si vous vendez des affaires à des affaires, il devrait être assez facile d'empêcher les concurrents d'obtenir un code compilé. Le moyen le plus simple de traiter ce type de situation est avec un libellé contractuel fort. Avec IBM Cognos (produit de renseignement commercial majeur comme SAP), une clé de licence n'est même pas utilisée. Ils font quelque chose comme l'obfuscation de code, mais ils protègent principalement leur produit avec des couches.
Ceci est évidemment plus difficile avec les situations de type professionnel. Vous ne pouvez probablement pas contrôler qui a accès au logiciel. Les autres affiches ont de bonnes solutions en ce qui concerne cela.
Chaque fois que vous voulez protéger quelque chose, vous devez penser à quels threads que vous souhaitez défendre.
Avez-vous des secrets que vous souhaitez protéger?
Voulez-vous vous protéger contre le piratage logiciel par des particuliers?
Voulez-vous protéger une entreprise de la concurrence?.
En ce qui concerne 1. Va, si vous avez des secrets, postez le logiciel qui les traite sur votre propre serveur et que SaaS.
Pour autant que 2. va, cela ne vaut probablement pas votre peine d'investir dans la protection car la protection de tous les logiciels est cassée.
En ce qui concerne 3. Le danger n'est pas un ingénierie inverse droite par le code, mais une personne reprogrammante votre idée. Si vous voulez vous protéger contre cela, vous devriez aller à la route coûteuse et acheter des brevets.