GUIDA Crack e Keygen: cosa sono e come funzionano?

Pubblicità

DispatchCode

Moderatore
Staff Forum
Utente Èlite
Messaggi
2,341
Reazioni
1,931
Punteggio
134

Crack e Keygen​




Chi non ha mai scaricato del software "piratato"? Ma si, quei software comunementi definiti "crackati", dove non si paga una licenza o non compare un watermark piuttosto di una finestra che ricorda di continuo "devi comprare la versione a pagamento" oppure una una versione "per sempre in prova"...
Ecco, in questo articolo volevo spendere due parole, più per l'utente "comune", magari quello appassionato di PC che però non fa l'informatico di professione.

Bene, iniziamo! Cosa sono i software crackati? Come vengono crackati? Cosa sono i keygen? Ci sono pericoli?
Visto che manca qualcosa di base e non indirizzata prevalentemente a "utenti avanzati" (tecnici, informatici etc), ho pensato di scrivere due righe.

0 - Premessa / Preambolo​



Ho deciso di evitare un discorso etico/morale e legale, mi sembra inutile ripetere che usare software pirata, oltre che potenzialmente pericoloso (malware), non fa guadagnare chi ha realizzato il software, che ha speso ore non solo nello sviluppo ma anche nella progettazione di quel prodotto.
Io credo che nella nostra vita quotidiana almeno una volta molti di noi hanno usato un qualche sotware piratato, fosse anche per 1 volta sola e per necessità, quindi mi sembra inutile fare il bacchettone.

Ah va da sè che dovrò semplificare per ovvie ragioni, quindi se qualcuno volesse approfondimenti, può tranquillamente domandare e se saprò rispondere lo farò sicuramente (e cercherò inoltre di prestare attenzione ai termini utilizzati, per non complicare le cose)

1 - Software crackati e malware​



Iniziamo da questo quesito: i software crackati contengono malware (virus, trojan, worm,...)?
Dipende, forse si o forse no. Non è impossissibile nè tantomeno improbabile. Alcuni "gruppi" si sono fatti ormai un nome, ed è quindi improbabile vadano a diffondere del malware. In generale comunque sono un ottimo veicolo "di contagio".

2 - Cosa sono i software crackati?​



Generalmente un software crackato (si dice anche "patchato") viene modificato in qualche sua parte. Immaginate un programma che una volta installato porta con sè uno o più file EXE e una o più DLL (Dynamic Link Library, librerie dinamiche, vengono usate dal file EXE che le "carica" durante l'esecuzione). Un crack va a modificare il codice del file eseguibile e/o di una o più DLL.

E' bene notare che si tratta di una modifica fisica a un file. Nei casi più semplici viene bypassato quello che è il controllo del seriale; per fare un esempio stupido ma intuitivo:

Codice:
SE seriale UGUALE A "ABCD-EFGH-IJKL"
   "IL SERIALE è CORRETTO"
ALTRIMENTI
   "SERIALE ERRATO"

Da notare che non è così facile superare i controlli (il seriale non è mai "in chiaro", spesso è cifrato o viene generato usando un qualche tipo di algoritmo).

Immaginate di avviare un software e di inserire un seriale casuale: il controllo sopra mostrerebbe "SERIALE ERRATO". Se il controllo viene bypassato andando a modificare la condiizone ad esempio in:

Codice:
SE SERIALE DIVERSO DA "ABCD-EFGH-IJKL"
   "IL SERIALE è CORRETTO"
ALTRIMENTI
   "SERIALE ERRATO"

ecco che il seriale risulterà corretto. Questo software - semplificando - è stato crackato modificando il controllo.

Non voglio entrare nel tecnico, ma il problema sta proprio qui: se invece di modificare solo quel controllo venisse inserita nell'eseguibile una parte di codice malevola ed eseguita ancora prima di avviare il software stesso, voi non ve ne accorgereste nemmeno. E questo è solo per fare un esempio.

Per chi è incuriosito dall'argomento o ha un profilo più tecnico (e magari sta studiando per diventare un informatico anche), lascio due link a due articoli pubblicati qui su Tom's gli scorsi mesi. Si tratta di quelli che vengono definiti "CrackMe"; ovvero sono software scritti apposta per essere crackati, per esercizio (evitando di violare anche licenze).

3 - Cosa sono i keygen?​



Qui la cosa si fa ancora più interessante. Di norma i keygen sono quel tipo di programmino che viene lanciato e vi fa copiare il codice seriale che andrete poi ad inserire nel prodotto.
Come detto sopra, potenzialmente il keygen può contenere esso stesso del malware. In questi casi il software comunque non viene modificato, proprio perchè il seriale generato sarà valido.

Come funziona la generazione del seriale? Questo dipende dall'algoritmo utilizzato.
Per esempio, se dico che un seriale valido deve essere lungo 3 caratteri e che il terzo carattere deve valore quanto "CARATTERE 1 + CARATTERE 2 - 50" e ho come carattere 1 A e come carattere 2 C, il carattere 3 deve per forza essere R. Questo perchè secondo una codifica nota come ASCII, il carattere A vale 65, il carattere C vale 67, quindi 65+67-50 = 82 (R).

asciifull.gif
asciifull.gif

Fonte ASCII Table

Questo è un algoritmo semplice, ovviamente, ma noterete che i seriali validi sono più di uno; infatti se come primi due caratteri scegliamo "0" (che vale 48) e M (77) otteniamo 77+48-50 = 75, che è la lettera K. Quindi una sequenza come "ACR" o "0MK" sarà ritenuta valida.

Il keygen fa questo: in pratica colui che realizza il keygen analizza il programma eseguibile, o in generale l'algoritmo di calcolo, e lo riproduce.

4 - Come vengono crackati i software?​



Qui il discorso si fa interessante, e sfortunatamente anche tecnico. Ai lettori non molto ferrati dico solo che i software utilizzati sono di fatto... software legali. Si tratta di programmi che gli sviluppatori utilizzano normalmente nel loro lavoro; questi software prendono il nome di "debugger". "debuggare" è il termine usato per indicare l'operazione di "ricerca di un bug, di un problema/errore nel programma".

Questi debugger consentono di vedere il codice del file eseguibile in un linguaggio noto come Assembly; un vecchio linguaggio ormai non più utilizzato se non in alcuni contesti (evito di approfondire). Insomma, il codice che viene letto da chi "debugga" con questi strumenti non è più il codice che ha scritto il programmatore, ma è un linguaggio (Assembly, appunto) che è una sorta di "traduzione letterale del codice macchina della CPU".
Il codice assembly è una rappresentazione in mnemonici del codice macchina; quindi diciamo che un numero in base esadecimale come 00h (o semplicemente 0 in decimale) identifica l'operazione ADD (somma) etc etc.

Giusto una precisazione: ormai si cerca di non debuggare più in questo modo, in quanto gli strumenti che utilizziamo ci rendono la vita un pò più facile, e i tools di cui disponiamo fanno vedere questo linguaggio assembly solo su richiesta.
Tuttavia i "debugger" utilizzati da chi "cracka" del software... fanno solo quello.

Oltre a questo tipo di strumenti si utilizzano anche i "disassembler": come dice il nome stesso fanno la procedura inversa dell'assemblaggio. In buona sostanza mostrano sempre il codice assembly mostrato sopra. La differenza dal debugger è che quest'ultimo consente di caricare il programma in memoria ed eseguirlo; quindi in pratica tramite il debugger si esegue un'operazione alla volta (quelle che si chiamano istruzioni) e lo si manda avanti o lo si ferma secondo le necessità; questo consente di vedere come si comporta il programma durante l'esecuzione, e quindi, ad esempio, in quale posizione in memoria va a leggere/scrivere.

I crackme che ho linkato sopra contengono svariato codice Assembly, se siete curiosi.

5 - Reverse engineering​



Se non siete nel campo informatico, non so se l'avete mai sentito. Il reverse engineering (o reversing) è l'operazione inversa all'ingegnerizzazione del software, come si evince dal nome; in buona sostanza significa comprendere il funzionamento del software. Questo sia per curiosità, sia per sicurezza - come accertarsi che non vi siano bug o comprendere il funzionamento di qualcosa.

Come avviene? Bhe in sostanza dipende dal linguaggio ma quando si tratta di eseguibili, di norma si usano i software descritti sopra. Un keygen non lo si scrive senza fare del reversing e senza comprendere il funzionamento di un software.

6 - Malware analyst​



Questo è un campo che trovo davvero interessante. Abbraccia la sicurezza informatica, ne fa parte, ma è più "di nicchia". Diciamo che chi si occupa di "penetration testing" non fa anche il malware analyst.
Qui i software usati sono molti altri, come per chi fa reversing (e cracka i software), ma tra i software usati ci sono sempre disassembler e debuggers.
Non è un paragrafo che ha a che fare con il "lato oscuro" (eg. crack), bensì al contrario, ma fa uso di strumenti analoghi se non gli stessi. Questo per dire che le medesime competenze (da "reverser") possono essere usate in svariati modi.

7 - Conclusione​



Ogni volta che usate un software pirata chiedetevi sempre "mi serve davvero? Esiste una soluzione gratuita?", "il software crackato che sto usando è sicuro?".
Bene, spero che per quanto breve - chi ha letto i miei articoli sul forum sa che tendo a farmi prendere la mano x - sia stato interessante, comprensibile e non colmo di informazioni scontate e che già conoscevate.
 
Ultima modifica:

Crack e Keygen​




Chi non ha mai scaricato del software "piratato"? Ma si, quei software comunementi definiti "crackati", dove non si paga una licenza o non compare un watermark piuttosto di una finestra che ricorda di continuo "devi comprare la versione a pagamento" oppure una una versione "per sempre in prova"...
Ecco, in questo articolo volevo spendere due parole, più per l'utente "comune", magari quello appassionato di PC che però non fa l'informatico di professione.

Bene, iniziamo! Cosa sono i software crackati? Come vengono crackati? Cosa sono i keygen? Ci sono pericoli?
Visto che manca qualcosa di base e non indirizzata prevalentemente a "utenti avanzati" (tecnici, informatici etc), ho pensato di scrivere due righe.

0 - Premessa / Preambolo​



Ho deciso di evitare un discorso etico/morale e legale, mi sembra inutile ripetere che usare software pirata, oltre che potenzialmente pericoloso (malware), non fa guadagnare chi ha realizzato il software, che ha speso ore non solo nello sviluppo ma anche nella progettazione di quel prodotto.
Io credo che nella nostra vita quotidiana almeno una volta molti di noi hanno usato un qualche sotware piratato, fosse anche per 1 volta sola e per necessità, quindi mi sembra inutile fare il bacchettone.

Ah va da sè che dovrò semplificare per ovvie ragioni, quindi se qualcuno volesse approfondimenti, può tranquillamente domandare e se saprò rispondere lo farò sicuramente (e cercherò inoltre di prestare attenzione ai termini utilizzati, per non complicare le cose)

1 - Software crackati e malware​



Iniziamo da questo quesito: i software crackati contengono malware (virus, trojan, worm,...)?
Dipende, forse si o forse no. Non è impossissibile nè tantomeno improbabile. Alcuni "gruppi" si sono fatti ormai un nome, ed è quindi improbabile vadano a diffondere del malware. In generale comunque sono un ottimo veicolo "di contagio".

2 - Cosa sono i software crackati?​



Generalmente un software crackato (si dice anche "patchato") viene modificato in qualche sua parte. Immaginate un programma che una volta installato porta con sè uno o più file EXE e una o più DLL (Dynamic Link Library, librerie dinamiche, vengono usate dal file EXE che le "carica" durante l'esecuzione). Un crack va a modificare il codice del file eseguibile e/o di una o più DLL.

E' bene notare che si tratta di una modifica fisica a un file. Nei casi più semplici viene bypassato quello che è il controllo del seriale; per fare un esempio stupido ma intuitivo:

Codice:
SE seriale UGUALE A "ABCD-EFGH-IJKL"
   "IL SERIALE è CORRETTO"
ALTRIMENTI
   "SERIALE ERRATO"

Da notare che non è così facile superare i controlli (il seriale non è mai "in chiaro", spesso è cifrato o viene generato usando un qualche tipo di algoritmo).

Immaginate di avviare un software e di inserire un seriale casuale: il controllo sopra mostrerebbe "SERIALE ERRATO". Se il controllo viene bypassato andando a modificare la condiizone ad esempio in:

Codice:
SE SERIALE DIVERSO DA "ABCD-EFGH-IJKL"
   "IL SERIALE è CORRETTO"
ALTRIMENTI
   "SERIALE ERRATO"

ecco che il seriale risulterà corretto. Questo software - semplificando - è stato crackato modificando il controllo.

Non voglio entrare nel tecnico, ma il problema sta proprio qui: se invece di modificare solo quel controllo venisse inserita nell'eseguibile una parte di codice malevola ed eseguita ancora prima di avviare il software stesso, voi non ve ne accorgereste nemmeno. E questo è solo per fare un esempio.

Per chi è incuriosito dall'argomento o ha un profilo più tecnico (e magari sta studiando per diventare un informatico anche), lascio due link a due articoli pubblicati qui su Tom's gli scorsi mesi. Si tratta di quelli che vengono definiti "CrackMe"; ovvero sono software scritti apposta per essere crackati, per esercizio (evitando di violare anche licenze).

3 - Cosa sono i keygen?​



Qui la cosa si fa ancora più interessante. Di norma i keygen sono quel tipo di programmino che viene lanciato e vi fa copiare il codice seriale che andrete poi ad inserire nel prodotto.
Come detto sopra, potenzialmente il keygen può contenere esso stesso del malware. In questi casi il software comunque non viene modificato, proprio perchè il seriale generato sarà valido.

Come funziona la generazione del seriale? Questo dipende dall'algoritmo utilizzato.
Per esempio, se dico che un seriale valido deve essere lungo 3 caratteri e che il terzo carattere deve valore quanto "CARATTERE 1 + CARATTERE 2 - 50" e ho come carattere 1 A e come carattere 2 C, il carattere 3 deve per forza essere R. Questo perchè secondo una codifica nota come ASCII, il carattere A vale 65, il carattere C vale 67, quindi 65+67-50 = 82 (R).

asciifull.gif

Fonte ASCII Table

Questo è un algoritmo semplice, ovviamente, ma noterete che i seriali validi sono più di uno; infatti se come primi due caratteri scegliamo "0" (che vale 48) e M (77) otteniamo 77+48-50 = 75, che è la lettera K. Quindi una sequenza come "ACR" o "0MK" sarà ritenuta valida.

Il keygen fa questo: in pratica colui che realizza il keygen analizza il programma eseguibile, o in generale l'algoritmo di calcolo, e lo riproduce.

4 - Come vengono crackati i software?​



Qui il discorso si fa interessante, e sfortunatamente anche tecnico. Ai lettori non molto ferrati dico solo che i software utilizzati sono di fatto... software legali. Si tratta di programmi che gli sviluppatori utilizzano normalmente nel loro lavoro; questi software prendono il nome di "debugger". "debuggare" è il termine usato per indicare l'operazione di "ricerca di un bug, di un problema/errore nel programma".

Questi debugger consentono di vedere il codice del file eseguibile in un linguaggio noto come Assembly; un vecchio linguaggio ormai non più utilizzato se non in alcuni contesti (evito di approfondire). Insomma, il codice che viene letto da chi "debugga" con questi strumenti non è più il codice che ha scritto il programmatore, ma è un linguaggio (Assembly, appunto) che è una sorta di "traduzione letterale del codice macchina della CPU".
Il codice assembly è una rappresentazione in mnemonici del codice macchina; quindi diciamo che un numero in base esadecimale come 00h (o semplicemente 0 in decimale) identifica l'operazione ADD (somma) etc etc.

Giusto una precisazione: ormai si cerca di non debuggare più in questo modo, in quanto gli strumenti che utilizziamo ci rendono la vita un pò più facile, e i tools di cui disponiamo fanno vedere questo linguaggio assembly solo su richiesta.
Tuttavia i "debugger" utilizzati da chi "cracka" del software... fanno solo quello.

Oltre a questo tipo di strumenti si utilizzano anche i "disassembler": come dice il nome stesso fanno la procedura inversa dell'assemblaggio. In buona sostanza mostrano sempre il codice assembly mostrato sopra. La differenza dal debugger è che quest'ultimo consente di caricare il programma in memoria ed eseguirlo; quindi in pratica tramite il debugger si esegue un'operazione alla volta (quelle che si chiamano istruzioni) e lo si manda avanti o lo si ferma secondo le necessità; questo consente di vedere come si comporta il programma durante l'esecuzione, e quindi, ad esempio, in quale posizione in memoria va a leggere/scrivere.

I crackme che ho linkato sopra contengono svariato codice Assembly, se siete curiosi.

5 - Reverse engineering​



Se non siete nel campo informatico, non so se l'avete mai sentito. Il reverse engineering (o reversing) è l'operazione inversa all'ingegnerizzazione del software, come si evince dal nome; in buona sostanza significa comprendere il funzionamento del software. Questo sia per curiosità, sia per sicurezza - come accertarsi che non vi siano bug o comprendere il funzionamento di qualcosa.

Come avviene? Bhe in sostanza dipende dal linguaggio ma quando si tratta di eseguibili, di norma si usano i software descritti sopra. Un keygen non lo si scrive senza fare del reversing e senza comprendere il funzionamento di un software.

6 - Malware analyst​



Questo è un campo che trovo davvero interessante. Abbraccia la sicurezza informatica, ne fa parte, ma è più "di nicchia". Diciamo che chi si occupa di "penetration testing" non fa anche il malware analyst.
Qui i software usati sono molti altri, come per chi fa reversing (e cracka i software), ma tra i software usati ci sono sempre disassembler e debuggers.
Non è un paragrafo che ha a che fare con il "lato oscuro" (eg. crack), bensì al contrario, ma fa uso di strumenti analoghi se non gli stessi. Questo per dire che le medesime competenze (da "reverser") possono essere usate in svariati modi.

7 - Conclusione​



Ogni volta che usate un software pirata chiedetevi sempre "mi serve davvero? Esiste una soluzione gratuita?", "il software crackato che sto usando è sicuro?".
Bene, spero che per quanto breve - chi ha letto i miei articoli sul forum sa che tendo a farmi prendere la mano x - sia stato interessante, comprensibile e non colmo di informazioni scontate e che già conoscevate.

Questo andrebbe messo in rilievo, per far capire a certe persone perché non dovrebbero usare determinati programmi.
Inoltre spesso si pensa che i veicoli di infezione siano semplicemente tramite torrent e programmi similari quando spesso anche YouTube fa da veicoli di infezione e lo stesso Google dato che ormai le persone cercano anche come lavarsi.
Comunque @DispatchCode io ti faccio i miei complimenti perché sei sempre molto chiaro ed esaustivo. Sono nel campo per passione da quando avevo 8 anni tra circuiti ed i primi libri di DOS, ne e passato di tempo. Alla fine anche se sono in un altro ramo continuo a studiare reti e codici e devo dire che fai sempre bei lavori e bei post. Bravo!
 
Grazie per l'apprezzamento @Air_ !
Io sono nel campo dal 2007 circa, da autodidatta (e qualche anno dopo ho iniziato a lavorare come sviluppatore, ora Backend Dev).
Mi è sempre piaciuto scrivere, e quando avevo più tempo anche addentrarmi nel mondo di cui scrivo oggi: reversing, OS e architetture (x86 e x86-64).
 
Grazie per l'apprezzamento @Air_ !
Io sono nel campo dal 2007 circa, da autodidatta (e qualche anno dopo ho iniziato a lavorare come sviluppatore, ora Backend Dev).
Mi è sempre piaciuto scrivere, e quando avevo più tempo anche addentrarmi nel mondo di cui scrivo oggi: reversing, OS e architetture (x86 e x86-64).
Si nota che le competenze ci sono, o almeno io le noto anche dal linguaggio che utilizzi nei post e da ciò che crei. Purtroppo per motivi lavorativi e di studio ho allentato un pò, poi comunque come mondo è estremamente vasto non basterebbe una vita. Comunque grazie anche per questo post.
 
Rinnovo il ringraziamento. ?
Ti capisco, io da quando lavoro ho dovuto rallentare molto, specialmente perchè oltre all'assenza di tempo cambia il settore; sono più interessato a quanto dicevo sopra rispetto al Backend Dev; come dici giustamente tu, non si può sapere tutto, e dopo 8-9h di lavoro (che diciamo, non gratifica molto) l'energia viene meno (specialmente dopo qualche anno di lavoro).
L'ultimo progetto realizzato per diletto l'ho pubblicato mesi fa, ho scritto due righe qui Decodificare la lunghezza delle istruzioni di x86 e x64, da allora mi sono fermato.
 
Pubblicità
Pubblicità
Indietro
Top