6
votes

Comment fournir un programme Java à un client?

J'ai écrit une application logicielle en Java. Maintenant, je veux la livrer à mes clients. Mais avant cela, je veux faire quelque chose sur ce logiciel mentionné ci-dessous. Vous pouvez répondre à toutes les questions ci-dessous:

Je veux:

  1. chiffrer tous les fichiers .class pour que personne ne puisse le décompiler. Comment puis-je crypter?
  2. Après cryptage, je veux obscorer ce code pour ajouter une sécurité supplémentaire. Comment puis-je faire ça?
  3. ajoutez une fonctionnalité "clé série" de sorte que le logiciel ne fonctionne que après l'avoir inscrite avec la clé fournie par moi. Ceci est très important de manière à empêcher l'utilisation multi-utilisateurs de mon logiciel. Comment puis-je ajouter cette fonctionnalité de clé et comment puis-je générer des clés? Et comment puis-je limiter ce logiciel pour travailler uniquement sur un seul ordinateur.
  4. Le fichier JAR peut être décompressé et le fichier .Class peut être vu. Y a-t-il un moyen d'envelopper le fichier JAR dans quelque chose de pour que personne ne puisse décompresser ce fichier.
  5. Je ne veux pas dire au client d'installer de la première fois Java pour exécuter ma candidature. Ainsi, si quelqu'un installe mon logiciel, le Java est automatiquement installé sur son ordinateur sans l'informer que Java est installé sur son ordinateur. Si cela est possible, il est-il légal d'utiliser le logiciel Java de cette manière.
  6. Modifiez l'icône du fichier JAR de façon permanente.
  7. implémente un code qui vérifie mon site pour toutes les mises à jour disponibles.

    Si vous voulez que d'autres suggestions augmentent la sécurité du Softwre, vous êtes également accueilli.


4 commentaires

Peut-être casser votre question dans un tas de petites questions. Mais 1, 2 et 4 (probablement 3 aussi) sonner un peu paranoïaque


Question 5 me bugs un peu. Vous demandez essentiellement comment configurer un logiciel 1, que l'utilisateur souhaite, de sorte qu'il installe de manière invisible pièce de logiciel 2, qui souhaite n ° 1, mais que l'utilisateur peut ne pas vouloir du tout. La seule différence entre cela et la situation des logiciels malveillants typiques est que n ° 2 est Java. C'est peut-être une meilleure idée d'expliquer à vos utilisateurs lors de l'installation dont ils ont besoin de Java, ne l'avez pas, et vous êtes sur le point de l'installer?


Je pense que c'est raisonnable de proposer au moins d'utiliser un environnement Java que vous vous installez. Il y a beaucoup d'applications communes qui font cela ... Oracle (et je pensais que Eclipse utilisait avec-JVM et sans versions JVM disponibles dans les 22 jours). Tant que vous venez de mettre les fichiers au bon endroit et de faire votre application, je ne vois pas le problème. Il suffit de ne pas gêner avec le chemin ou le registre Windows et je pense que vous êtes en toute sécurité sur un territoire malveillant.


Vous devez également consulter les règles de licence Java pour vérifier que vous le distribuez légalement, bien sûr.


7 Réponses :


7
votes

chiffrer tous les fichiers .class pour que personne ne puisse le décompiler. Comment puis Je le crypté?

vous ne pouvez pas. Si personne ne peut le décompiler, comment vous attendez-vous à la cible JVM?

Après cryptage, je veux obscorer ce code pour ajouter un supplément sécurité. Comment puis-je faire ça?

Je veux ajouter une "touche série" fonctionnalité afin que le logiciel Fonctionne seulement après l'avoir inscrite avec la clé fournie par moi. C'est très important de manière à empêcher le multi-utilisateur Utilisation de mon logiciel. Comment puis-je ajouter cette fonctionnalité clé et comment puis-je générer des clés. Et comment puis-je limiter ce logiciel ne fonctionne que sur un seul ordinateur.

Il y a quelques façons de le faire, mais un simple est avec la cryptographie publique:

  • Votre logiciel génère un ID de requête aléatoire ou un ID de requête en fonction des attributs de la machine et de votre utilisateur vous le soumet.
  • Vous signerez l'ID de demande avec votre clé privée et renvoyez-la à l'utilisateur.
  • L'utilisateur fournit l'ID de demande signé au logiciel qui valide qu'il a été signé par vous.

    Le fichier JAR peut être décompressé et le fichier .class peut être vu. Y a-t-il Toute façon d'envelopper le fichier jar dans quelque chose de pour que personne ne puisse décompresser ce fichier.

    NON

    Je ne veux pas dire au client de d'abord installer Java pour courir mon application. Alors y a-t-il un moyen de que si quelqu'un installe mon logiciel, Le Java est automatiquement installé sur son ordinateur sans informer lui que Java est en train d'être téléchargé pour son ordinateur. Si c'est possible, alors Est-il légal d'utiliser le logiciel Java dans de cette façon.

    essayez de construire un Installateur NSIS pour votre application qui détecte / installe Java et votre programme.


3 commentaires

Les liens vers LMGTFY sont fronçés, justifiés car ils peuvent parfois être.


@ROB Désolé, même des travaux de base de base sur ce sujet auraient éliminé ma réponse snarky. Peut-être s'il demandait une comparaison des outils disponibles ou même de la recherche pour que Java Obfuscation, il aurait été mieux éteint.


Après avoir chiffré tous les fichiers de classe, je le déchiffrerai juste avant de charger ce fichier de classe au moment de l'exécution afin que JVM obtiendra des fichiers .Class déchiffrés.



9
votes

Dans aucun ordre particulier:

2 - Il y a des produits qui effectuent l'obfuscation. Ils renomment généralement les cours / variables / méthodes aux noms de lettres unique. Cela rend la détermination des erreurs signalées par l'utilisateur plutôt difficile. Les traces de pile montrant l'exception se produisent dans A.b.c ne sont pas particulièrement utiles.

1,3,4 - Vous ne pouvez pas éviter complètement ce risque si vous distribuez Java. Votre code doit être déballé et chargé à un moment donné. Si une personne remplace Rt.jar dans la JVM, ils peuvent remplacer le chargeur de classe de niveau supérieur et jeter vos cours comme ça. Obfuscation le rend moins utile pour eux, mais voir la mise en garde ci-dessus.

5 - Distribuez un «JRE privé». Fondamentalement, vous avez une JRE dans votre dossier de programme. Votre script de lanceur le gère. Augmente la taille de votre distribution cependant.

6 - sous Windows, ce serait une question d'association de fichiers. Mais cela affecterait également tous les autres fichiers JAR. Sauf partie de 4 (Toutefois, vous y gérez cela), vous utilisez également une extension différente. Pas sûr d'autres systèmes d'exploitation.

7 - Utilisez Java Web Start? A défaut, il suffit d'avoir un fichier sur votre serveur inscrit la version la plus récente, récupérez le fichier et comparez avec la version installée.

pour 1,2,4 et 5, vous pouvez également examiner la compilation au code natif à l'aide de GCJ ou similaire. Méfiez-vous des problèmes de compatibilité si vous le faites cependant.


0 commentaires

0
votes

Il suffit d'ajouter aux autres réponses ici:

1 et 4 : vous pouvez réellement faire cela si vous modifiez la JVM et pré-emballer avec votre installation, mais c'est contre le contrat de licence de Java pour distribuer une JVM modifiée sans payer de soleil comme un milliard dollars.


0 commentaires

3
votes

Vous pouvez le compiler avec GCJ , qui compilera votre application à une fenêtre normale / Linux exécutable natif (.exe). Ensuite, vous pouvez créer une installation, à l'aide d'un programme tel que InstallShield .


1 commentaires

Méfiez-vous que GCJ est une mise en œuvre (incomplète? Et non compatible) de Java 1.4, elle ne fonctionnera pas si vous avez utilisé la syntaxe ou les bibliothèques Java 5. Je ne recommanderais pas d'utiliser GCJ pour un logiciel sérieux.



1
votes

La société où je travaille réellement expédie des fichiers JAR non ignorés, avec toutes les informations de débogage en place. De cette façon, si une erreur survient sur le site d'un client, elle peut nous envoyer la structure complète qui aide énormément à analyser et à localiser des bogues dans le code.

essayer d'empêcher votre code vous mènera dans une course d'armes avec des craquelins potentiels et consommez des quantités énormes avec peu ou pas d'avantage réel. Au lieu de cela, je vous conseillerais d'essayer d'essayer d'autres moyens de faire de l'achat (et de ne pas pirater) votre logiciel intéressant votre client. Par exemple, vous pouvez leur offrir des mises à jour gratuites ou un support technique, ou quelque chose comme ça.


comme pour 6 : vous pouvez utiliser JSMOOK ou un outil similaire pour Créez une enveloppe EXE pour votre application. Cela vous permettra de changer l'icône, et vos clients disposeront d'un fichier EXE qu'ils peuvent doubler sans avoir à désordre avec des associations de fichiers pour les fichiers JAR.
Notez cependant que l'EXE généré ne contiendra pas Java ou vos fichiers JAR. Cependant, il imprimera un bon message d'erreur si Java n'est pas disponible.


0 commentaires

4
votes

Construisez une meilleure relation de confiance avec vos clients.

Ensuite, vous pouvez passer du temps supplémentaire (ne pas faire des tâches 1 à 5) pour apporter des améliorations, corriger des bugs, etc., ce qui améliore à son tour la relation avec vos clients.


0 commentaires

0
votes

Qui est votre client? Piratebay.org? Sérieusement, chaque entreprise majeure des États-Unis paie pour les logiciels. Le risque de cesser de fumer et de les appeler est trop élevé. Vous avez besoin d'une protection suffisante pour faciliter un programmeur d'avoir acheté pour payer le produit que de contourner votre protection contre la copie.


0 commentaires