Question

Je le codage d'un logiciel sur java et je presque terminé, je voudrais savoir comment créer une version d'essai qui fonctionnent par exemple pendant 30 jours, parce que je vais de l'envoyer au certaines entreprises

comment faire comme shareware ou trialware, nous pouvons également bloquer l'accès au .class dans le fichier jar?

Merci

Était-ce utile?

La solution

Il y a un produit appelé Rempart qui vous permet de faire une version d'essai pour votre application Java. Il ne prend que quelques minutes et cela fonctionne assez bien.

Vous pouvez le trouver à http://Rampartlicensing.com

Autres conseils

Voici une idée:

  1. Créer une base de données (par exemple une base de données SQL Server) qui est accessible au public sur le Web. Il gardera une liste des clés de licence « version d'essai ». Vous pouvez utiliser le même système pour les clés de licence version complète lorsque votre produit est acheté.

  2. Quand votre logiciel Java est le premier terme, il va provoquer une licence d'essai à créer qui sera stocké dans la base de données

  3. Le logiciel vérifie Java pour une licence valide chaque fois qu'il est exécuté. La date à laquelle la licence a été créée est stockée dans la base de données de sorte qu'il n'a pas d'importance ce que les horloges du client sont définies à.

  4. Le logiciel cesse de fonctionner lorsque la licence est expiré

logiciel standard de Windows peut rechercher l'ID du processeur et de l'utilisation que dans le cadre de la licence, de sorte que chaque ordinateur ne peut exécuter le logiciel d'essai une fois. Est-ce que quelqu'un sait s'il y a un quelconque "JVM ID" qui peut être utilisé à cet effet?

Peut-être est libre ou open source code correspondant licence déjà là-bas?

Pourquoi ne pas simplement coder en dur une date d'expiration dans le programme d'essai afin que vous ne devez pas continuer à le soutenir? Vous pouvez mettre cela en main ().

// Die after October 1, 2010
Calendar expireDate = Calendar.getInstance();
// January is 0 (y, m, d)
expireDate.set(2010, 9, 1);
// Get current date and compare
if (Calendar.getInstance().after(expireDate)) {
  // Die
  System.exit(0);
}

En outre, Microsoft distribue leur grand logiciel bêta échelle. Ils donnent juste une date d'expiration.

Si vous parlez de la prévention de l'ingénierie inverse ou de modifier le code, vous ne pouvez pas. Vous pouvez masquer le programme compilé, mais cela n'empêchera pas les gens qui seraient désossage votre code de toute façon.

Je voudrais simplement faire quelque chose de vraiment simple et juste assez de telle sorte que les non-programmeurs ne seraient pas en mesure de comprendre.

Je voudrais quelque chose comme écrire dans un fichier le nombre de millisecondes lorsque le programme a été installé dans un 64 bits de long en binaire dans un fichier. Et que votre principale vérification de classe et de faire respecter le délai. Oui les gens peuvent changer leurs horloges au travail autour, mais vraiment vous ne voulez pas vendre à ces gens de toute façon. Assurez-vous également l'heure actuelle est strictement dans les 30 jours de l'installation. La plupart des utilisateurs vient de mettre leurs horloges en arrière d'un an et il fonctionne avec la plupart des programmes, car ils ont juste fait simple de moins que la vérification de la différence. Vous devriez également vérifier que la différence dans le nombre de jours de cours d'installation est également supérieur à 0.

Si vous sentez que vous avez besoin de plus de protection que cela, alors vous avez un problème de modèle d'affaires plus un logiciel. Son fondamentalement impossible de le faire unhackable, d'autant plus que vous pouvez simplement extraire et démonter les fichiers de classe.

Le problème en essayant de limiter les dates est que la solution naïve de simplement vérifier la date est facilement berner si les jeux de personne A leur horloge système. Je travaillais avec un gars qui a gardé une boîte virtuelle VMWare juste pour le temps en cours d'exécution logicielle limitée. serait d'enregistrer le temps de la dernière fois qu'il a été exécuté Une meilleure approche, et si le temps passe jamais ce moment-là, vous savez que l'horloge était en retrait et vous pouvez annuler. Le problème est de déterminer comment planquer ce fichier quelque part où l'utilisateur ne peut pas trouver un remplacer. Encore une fois, dans le l'environnement VMWare ou VirtualBox, l'utilisateur peut simplement revenir à un instantané précédent.

En d'autres termes, vous pouvez limiter certaines des personnes une partie du temps, mais pas tous les gens tout le temps.

Je travaille sur un logiciel Java commercial et il est protégé.

est obligatoire une connexion Internet acceptable dans votre cas? Dans notre cas, notre logiciel n'a de sens que s'il y a une connexion Internet et, par conséquent, nous pouvons faire l'ingénierie inverse impossible en suivant simplement ce mantra:

faire partie suffisante du calcul se produit sur le côté serveur

Il est rien contre ce un attaquant peut faire en plus:

  • réécrire la partie de votre logiciel qui se passe sur le côté serveur

  • pirater votre serveur

Si nos utilisateurs potentiels ne sont pas satisfaits du fait que nos mandats logiciels une connexion permanente à Internet, ils peuvent acheter ou un pirate de produit de qualité inférieure de notre concurrent.

Pensez-y de cette façon:. Personne n'a jamais réussi à jouer sur battle.net de Blizzard à l'aide des clés de licence faux / généré

Bien sûr, un pirate pourrait essayer de simuler l'ensemble battle.net, mais la version piratée ne permettrait pas aux gens de jouer, disons, l'économie réelle WoW, ni de rivaliser sur la véritable échelle Starcraft, etc.

Pourquoi ne pas-on réussi à le faire. parce que Blizzard fait partie suffisante du calcul se produit sur le côté serveur

partie suffisante du calcul qui se passe du côté du serveur moyen efficace:. "bons jeux pirates"

Plus nous passons à un monde connecté en permanence, plus il est facile de protéger les applications contre le piratage. Idem pour le contenu (DRM), pour le meilleur ou le pire.

Je vérifie la date de ce qu'un serveur de temps atomique me enverra au début au code. Ensuite, je comparerai cette date avec une date spécifique. Si le temps atomique est moins, alors System.exit (0).

public static GregorianCalendar getAtomicTime() throws IOException {
    BufferedReader in = null;

    try {
        URLConnection conn = new URL("http://64.90.182.55:13").openConnection();
        GregorianCalendar calendar = new GregorianCalendar();
        conn.setConnectTimeout(1000);
        in = new BufferedReader(new InputStreamReader(conn.getInputStream()));

        String atomicTime;
        while (true) {
            if ((atomicTime = in.readLine()).indexOf("*") > -1) {
                break;
            }
        }
        //System.out.println("DEBUG : " + atomicTime);
        String[] fields = atomicTime.split(" ");

        String[] date = fields[1].split("-");
        calendar.set(Calendar.YEAR, 2000 + Integer.parseInt(date[0]));
        calendar.set(Calendar.MONTH, Integer.parseInt(date[1]) - 1);
        calendar.set(Calendar.DATE, Integer.parseInt(date[2]));

        // deals with the timezone and the daylight-saving-time
        TimeZone tz = TimeZone.getDefault();
        int gmt = (tz.getRawOffset() + tz.getDSTSavings()) / 3600000;
        //System.out.println("DEBUG : " + gmt);

        String[] time = fields[2].split(":");
        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]) + gmt);
        calendar.set(Calendar.MINUTE, Integer.parseInt(time[1]));
        calendar.set(Calendar.SECOND, Integer.parseInt(time[2]));
        return calendar;
    } catch (IOException e) {
        throw e;
    } finally {
        if (in != null) {
            in.close();
        }
    }
}

En ce qui concerne les fichiers de classe, vous ne pouvez pas bloquer l'accès, mais vous pouvez faire leur version décompilées totalement illisible par obscurcissement .

J'ai eu du succès en utilisant True licence dans le passé. Il a un support pour une période d'essai. Utilisez-le en combinaison avec un outil d'obscurcissement comme ProGuard et il est certainement à craquer non trivial.

Je recommande limitions fonctionnels. J'ai peu après it programme. Le programme fonctionne pleinement, mais vous pouvez créer seulement 10 notes en mode non enregistré. Donc, j'essaie d'être gentil à l'utilisateur. Aucune date limitions, écrans nag ou someting autre mal. Seule petite ligne d'état qui a le texte et le bouton et LIMITER CE registre.

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