Come funzionano i keygenes del software?

10

Li ho visti molte volte, con molti tipi diversi di software, ma l'unica cosa che mi sono sempre chiesto è come i keygenens sanno quale chiave generare. Conosco il principio di base: il keygen guarda da qualche parte nei file di installazione del software e crea una chiave che corrisponde a un file crittografato che consente al programma di funzionare. Ma volevo sapere come lo fanno e come prevenirlo. Questa è davvero una domanda a più parti.

  1. How does the key-system work?
    • How do programmers usually create software that works based on a key. I am an intermediate programmer, but I never learned much of the security/anti-piracy aspect of it. How do they create and/or recognize the keys to allow the software to start working?
  2. Where does it usually look to find this "encrypted file"?

    • Is it in a physical file on the computer, or an of-site database that it calls?
  3. What do the companies do to encrypt that file?

    • I would emagine that the key must be stored in more than just plaintext, what do they do to keep it encrypted?
  4. What method is the keygen using to create the key?
    • I have played around a llitle with some password-cracker software such as "cain & able" and I have noticed, that with some of the password-cracking methods, such as brute-force and dictionary, it gives me ETAs in years, however keygens seem to create keys instantly. Are they using different methods entirely?
  5. What measures can companies take to prevent the use of keygens in pirated software?
    • I am starting to write my own software to be distributed, I was wondering what existing, relitivly easy methods can I use to prevent
    
posta Ephraim 01.04.2012 - 08:31
fonte

4 risposte

8

Come funziona il sistema di chiavi?

Beh, dipende che ci sono molte implementazioni. Uno di questi è stato discusso in stackoverflow :

Supponendo che tu non voglia fare una build speciale per ogni utente, quindi:

  • Genera una chiave segreta per il prodotto
  • Prendi il nome dell'utente
  • Concatenare il nome utente e la chiave segreta e l'hash con (ad esempio) SHA1
  • Disimballare l'hash SHA1 come stringa alfanumerica. Questo è il "codice prodotto" del singolo utente
  • All'interno del programma, fai lo stesso hash e confronta con il codice prodotto. Se uguale, OK.

Nota: ogni schema chiave può essere rotto. Ecco perché molti strumenti utilizzano la convalida online.

Dove si trova solitamente per trovare questo "file crittografato"?

Di solito non esiste un file crittografato quando si utilizza il metodo precedente. Potrebbero esserci altri metodi per generare chiavi con un altro algoritmo, ma non memorizzano mai tutte le chiavi nel programma.

Che cosa fanno le aziende per crittografare quel file?

Bene, se ti riferisci alla memorizzazione della chiave digitata dall'utente nel tuo sistema, a volte viene salvata in chiaro in un file di configurazione. A volte usano la crittografia simmetrica (come AES) con una chiave hardcoded per crittografare questo file.

Quale metodo usa il keygen per creare la chiave?

Perché ci sono persone in grado di capire lo schema che il programma utilizza e semplicemente implementarlo nel proprio keygen.

Quali misure possono prendere le aziende per impedire l'uso di keygen in software piratato?

Attivazione online, ma più difficile è che il cliente usi il software, meno è probabile che lo comprerà. Alla fine non c'è un singolo software che sia a prova di pirateria . Se ci fosse, aziende come Adobe e Microsoft ti assumeranno immediatamente.

    
risposta data 01.04.2012 - 09:07
fonte
6

I numeri di serie dei software per computer hanno uno schema specifico, che consente all'installatore o all'applicazione di rilevare se è o meno una chiave legittima. Un esempio molto semplice sarebbe che ogni numero seriale ha esattamente tre occorrenze del numero 5 in esso - quindi 1932-1253-2319-5512 sarebbe un numero seriale funzionante. In uno scenario di vita reale, le relazioni tra i numeri sarebbero naturalmente più complicate.

Il software spedito contiene un algoritmo che controlla se un seriale è valido o meno. Il creatore del software ha un software che gli consente di creare numeri di serie per il prodotto.

Per creare un keygen, un gruppo di cracker (persone specializzate nella rottura degli schemi di protezione delle copie) analizza l'eseguibile del programma per trovare la parte che controlla la serie. Quindi ricostruiscono l'algoritmo per creare i periodici in base al codice di controllo. Il keygen finito è un'applicazione che applica l'algoritmo per creare un numero seriale.

A volte i keygens non contengono realmente l'algoritmo, ma piuttosto un elenco di numeri seriali validi, di cui uno selezionato a caso.

Il keygen per Windows xp nei successivi service pack era più complicato, perché Microsoft controllava non solo se una chiave era valida, ma anche se era stata venduta con una copia e non era già in uso su un altro computer. Il keygen ha inviato richieste di massa al server Microsoft per verificare se fosse o meno una chiave funzionante.

    
risposta data 11.04.2012 - 20:33
fonte
2

How does the key-system work?

Nella forma più comune if (some-complex-or-not conditions-here) then (OK) . Complessità della condizione controllata limitata solo dalla tua fantasia

Where does it usually look to find this "encrypted file"?

non esistono modelli comuni , dove e come memorizzare e leggere queste informazioni. Può essere un file e non un file (chiave di registro, ad esempio, in caso di Windows)

What do the companies do to encrypt that file?

Practive usuale - non archiviare mai come testo normale, usa metodi di trasformazione irreversibili prima di archiviare, ma - con l'attivazione della chiave anche la memorizzazione delle chiavi in testo semplice potrebbe essere a prova di proiettile: la chiave rubata, una volta attivata, non funzionerà dal secondo registrazione (metodo abusabile e hackable, ma può funzionare in una certa misura)

What method is the keygen using to create the key?

Il metodo di controllo della validità modificato al contrario aiuta nell'ingegneria di creazione di dei dati-chiave

What measures can companies take to prevent the use of keygens in pirated software?

Prezzo non tecnicamente ragionevole per i prodotti. In questo caso i keygens appariranno (potrebbero) in ogni caso, ma sarà più "solo per divertimento" gioco per crack-teams, che richiesto (e usato con impatto diretto) da parte del consumatore di massa prodotto .

Tecnicamente - impedisce l'esecuzione in debugger, combinato con codice crittografato nel file (con decrittografia in memoria, possibile - multistrato per alcune parti sensibili), catene di manipolazioni della memoria, verifica online delle chiavi nella memoria esterna (vedere precedente metodi, che sono applicabili separatamente anche al correttore) ...

    
risposta data 02.04.2012 - 14:10
fonte
-3

Beh, prima di tutto ti suggerisco di interrompere vedere quei file keygen, dal momento che sono pezzi di software hackerati (per lo più / a volte) accompagnati da altre immagini dall'aspetto non dannoso / nfo / lnk files che nella piena capacità delle intenzioni degli hacker / cracker potrebbero essere creati appositamente per infettare la tua macchina stessa.

Potresti aver sentito di img / lnk / altri file che infettano le scatole proprio quando Explorer tenta di accedervi. Quindi ci sono keygen che sono binari stessi che dovrebbero eseguire ed eseguire qualsiasi cosa sulla tua scatola, giusto.

Now, for your Queries...

You gotta understand, there is no global specific file/memory-location/etc thing to go for.

Designing a keygen for software has two main basic ways:

  • Debugging the original Software's Licensing Action using some advanced process debugger () to look for memory locations interacted by the application to store/match the key. Then try to work your way around it. Need to pick up good Assembly Language skills to be awesome at these.
  • Reverse Engineering the application itself to find out the method involved and then act accordingly.
    
risposta data 01.04.2012 - 10:37
fonte

Leggi altre domande sui tag