Domanda

Sto codifica di un software su Java e ho quasi finito, mi piacerebbe sapere come possiamo creare una versione di prova che il lavoro, ad esempio per 30 giorni, perché io per inviarlo ad alcune società

così come farlo come shareware o trialware, anche noi possiamo bloccare l'accesso alla .class nel file jar?

Grazie

È stato utile?

Soluzione

C'è un prodotto chiamato Rampart che permette di effettuare una versione di prova per la vostra applicazione Java. Ci vuole solo un paio di minuti e funziona piuttosto bene.

Si può trovare a http://Rampartlicensing.com

Altri suggerimenti

Ecco un'idea:

  1. Creare un database (ad esempio un database di SQL Server), che è disponibile al pubblico sul web. Manterrà un elenco di chiavi di licenza "versione di prova". È possibile utilizzare lo stesso sistema per le chiavi di licenza versione completa quando il prodotto è stato acquistato.

  2. Quando il software Java è prima esecuzione, sarà causa di una licenza di prova per essere creato, che sarà memorizzata nel database

  3. I Java software verifica per una licenza valida ogni volta che viene eseguito. La data che la licenza è stato creato è memorizzato nel database in modo che non importa quello che gli orologi client sono fissati a.

  4. Il software smette di funzionare quando la licenza è scaduta

software di Windows standard può cercare l'ID della CPU e l'uso che, come parte della licenza, in modo che ogni computer può eseguire solo il software di prova una volta. Qualcuno sa se c'è un "JVM ID" di qualche tipo che può essere utilizzato per questo scopo?

Forse c'è libero o open-source il codice di licenza relative là fuori già?

Perché non solo codificare una data di scadenza nel programma di prova in modo che non c'è bisogno di continuare a sostenerlo? Si potrebbe mettere questo in 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);
}

In questo modo Microsoft distribuisce il proprio software su larga scala versione beta. Hanno appena dare una data di scadenza.

Se si sta parlando di prevenire il reverse engineering o modificare il codice, non si può. Si potrebbe offuscare il programma compilato, ma questo non fermerà le persone che sarebbero Reverse engineering il codice in ogni caso.

vorrei solo fare qualcosa di veramente semplice e solo abbastanza duro in modo tale che non programmatori non sarebbero in grado di capirlo.

lo farei qualcosa come scrivere in un file il numero di millisecondi quando il programma è stato installato prima di una lunga 64 bit in binario in un file. E avere il controllo di classe principale e far rispettare il limite di tempo. Sì la gente può cambiare i loro orologi Per ovviare a questo, ma in realtà non si vuole vendere a quelle persone in ogni modo. Verificare anche l'ora attuale è rigorosamente entro 30 giorni l'installazione. La maggior parte degli utenti è sufficiente impostare i loro orologi indietro di un anno e funziona con la maggior parte dei programmi perché hanno appena fatto un semplice meno il controllo di differenza. Si dovrebbe anche controllare che la differenza di numero di giorni dalla corrente da installare è anche maggiore di 0.

Se ti senti bisogno di maggiore protezione rispetto a quella, allora avete un problema di modello di business più di un unico software. La sua praticamente impossibile per renderlo unhackable, soprattutto perché si può semplicemente estrarre e smontare i file di classe.

Il problema con il tentativo di limitare le date è che la soluzione ingenua solo controllando la data è facilmente ingannare se gli insiemi persona torna il loro orologio di sistema. Ho lavorato con un ragazzo che teneva un box virtuale VMWare solo per l'esecuzione di software tempo limitato. Un approccio migliore sarebbe quello di registrare l'ora dell'ultima volta che è stato eseguito, e se il tempo passa mai prima di quel momento, si sa l'orologio era arretrato e si può interrompere. Il problema è capire come per riporre il file da qualche parte dove l'utente non può trovare una sovrascrittura di esso. Anche in questo caso, nel l'ambiente VMWare o VirtualBox, l'utente potrebbe semplicemente rollback a uno snapshot precedente.

In altre parole, è possibile limitare alcune delle persone per qualche tempo, ma non tutte le persone di tutti i tempi.

Io lavoro su un software commerciale Java ed è protetto.

È incaricando una connessione a Internet accettabile nel vostro caso? Nel nostro caso, il nostro software ha senso solo se c'è una connessione Internet e, quindi, possiamo fare il reverse engineering impossibile semplicemente seguendo questo mantra:

fanno parte sufficiente del calcolo avvenga sul lato server

C'è non contro questo un utente malintenzionato può fare oltre:

  • riscrivere la parte del software che sta accadendo sul lato server

  • pirateria server

Se i nostri potenziali utenti non sono contenti del fatto che i nostri mandati di software una connessione sempre attiva a Internet possono acquistare o uno dei pirati di prodotto inferiore del nostro concorrente.

Pensare in questo modo:. Nessuno è mai riuscito a giocare su battle.net di Blizzard con i tasti falso / di licenza generata

Certo, un pirata potrebbe cercare di falsificare l'intera battle.net, ma poi la versione pirata non avrebbe permesso alle persone di giocare, per esempio, il vero WoW economia né di competere sul reale scala Starcraft, ecc

Perché ha fatto nessuno è riuscito a farlo. perché Blizzard ha fatto parte sufficiente del calcolo avvenga sul lato server

parte sufficiente del calcolo accade sul lato server in modo efficace i mezzi:. "buoni giochi pirati"

Quanto più ci si sposta verso un mondo sempre connesso, più facile è quello di proteggere le applicazioni contro la pirateria. Lo stesso vale per i contenuti (DRM), in meglio o in peggio.

verifico data da ciò che un server di tempo atomico mi manderà all'inizio il codice. Poi, io confrontare tale data con una data specifica. Se il tempo atomico è minore, quindi 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();
        }
    }
}

Per quanto riguarda i file di classe, non è possibile bloccare l'accesso ad essi, ma si può fare la loro versione de-compilata totalmente illeggibile da offuscamento .

Ho avuto successo utilizzando Vero licenza in passato. Ha un supporto per un periodo di prova. Usalo in combinazione con uno strumento di offuscamento come ProGuard e rende certamente non banale da decifrare.

mi raccomando limitions funzionali. Ho poca post si nota programma. Il programma funziona completamente, ma è possibile creare solo 10 note in modalità non registrata. Quindi cerco di essere gentile utente. Nessun limitions data, nag schermi o someting altro male. Solo riga di stato di piccole dimensioni che ha il testo di limitazione e registrare e il pulsante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top