Premetto che “craccare” un programma o un gioco è un’attività illecita e potresti essere penalmente perseguito se dovessi decidere di praticarla. Il lettore è responsabile delle proprie azioni e io declino ogni responsabilità per eventuali usi illeciti delle tecniche che sto per descrivere. Craccare un programma o un gioco consiste tipicamente nello sbloccare illecitamente funzionalità altrimenti a pagamento.

I programmatori originali del software inseriscono nel codice controlli del tipo: “if is_valid(serial_number) then: enable_feature() else: disable_feature()” dove la feature da disabilitare a volte è il funzionamento dell’intero programma, a volte è la possibilità di salvare o esportare il proprio lavoro, a volte è la possibilità di usare il programma per un tempo illimitato. In questo modo gli utenti che non dispongono di un serial_number valido, non potranno accedere a queste feature speciali e potranno utilizzare solo le caratteristiche “di prova” (trial) del software. Craccare un programma consiste nel modificare il software eludendo il controllo descritto sopra, in modo che una versione trial si comporti come una versione completa.
Un metodo è quello di modificare il codice eseguibile del programma scrivendo: “if true then: enable_feature() else: disable_feature()“. In questo modo il software abiliterà la feature senza verificare il numero seriale. I pirati distribuiscono la versione modificata di questo file, nota come “crack”. Gli utenti sostituiranno la versione originale con il file “crack” ed ecco che il programma a pagamento viene utilizzato in modo illegale. Un altro metodo consiste nello studiare il codice della funzione is_valid per capire quali criteri essa utilizzi, e realizzare un programma che utilizzi questi stessi criteri per generare seriali casuali che passano il controllo. I pirati distribuiranno questo programma con il nome di “keygen“.
Non è difficile craccare un programma o un gioco, come puoi vedere. L’unica difficoltà aggiuntiva è che (a meno di grossolani errori o furti di informazioni) gli sviluppatori originali del software non distribuiscono un codice così ben organizzato e commentato come gli esempi che ho mostrato, ma il codice compilato, senza nomi di variabili e funzioni. I pirati dovranno quindi analizzare il comportamento del programma (reverse engineering) per capire, tra le centinaia di migliaia di istruzioni, quali sono quelle che realizzano il controllo di sicurezza, per poterle poi modificare. A volte gli sviluppatori inseriscono lo stesso controllo in più punti, e inseriscono controlli che verificano che gli altri punti di controllo non siano stati alterati, rendendo il lavoro dei pirati più difficile, in quanto sarà necessario trovare tutti i controlli per realizzare un crack completo.