Piccola premessa: questo articolo, a dispetto del titolo, non è fatto per promuovere il cracking di software o applicativi commerciali protetti da diritti d’autore e da licenza. Quello che andiamo a farvi vedere è solo un inquadramento didattico per capire come un crack per un programma viene realizzato: da qui a pensare di poter aggirare i sistemi di protezione di un software con una semplice lettura ce ne passa.
E’ utile però conoscere i rudimenti di queste tecniche per capire più a fondo il funzionamento di computer e applicazioni. Partiamo anzitutto con un breve contesto introduttivo. Prima di leggere il seguito, scopri intanto come craccare la password di una rete wifi per verificare la sicurezza della tua rete di casa.
Compilazione dei programmi: di cosa si tratta
Saltate pure questo paragrafo se avete una buona conoscenza su cosa sia un compilatore. Quando viene scritto un programma per pc (come per cellulare o altro dispositivo elettronico), viene scelto un linguaggio di programmazione ad alto livello (come il C o il Java) per impartire una serie di comandi: “visualizza una scritta sullo schermo”, “somma questi due numeri”, e così via.
Il processore però è esclusivamente in grado di eseguire poche “istruzioni” impartite come codice binario o linguaggio macchina. Ecco che allora interviene un compilatore, programma in grado di tradurre il codice sorgente (ovvero il codice in C o Java) in un linguaggio più meccanico chiamato Assembly, da cui si ottiene in maniera molto semplice il corrispondente codice binario.
A causa della diretta corrispondenza tra codice binario e assembly, è possibile partendo da un programma eseguibile (un videogioco o qualsiasi altra applicazione) risalire al suo codice assembly tramite un processo detto disassemblamento. Vediamo di capire qualcosa in più.
Aggirare un sistema di protezione software: il crack
Il crack (o crac) è un sistema di elusione dei sistemi di protezione di un software, ne esistono diverse tipologie. La tipologia principale – detta patch – si basa molto semplicemente sul creare una versione “modificata” del programma originale in cui viene saltata la richiesta di un codice seriale o di una password d’accesso.
Il tutto si basa molto grossolanamente su qualcosa del genere: aggiungere un comando JMP (Jump) nel codice assembly del programma prima che venga richiesta la password o prima che essa venga controllata. In questo modo il programma salta le righe specificate (quelle di richiesta della password).
Come craccare un programma
Non tutti i programmi usano lo scherma di protezione più banale (uso di password). Alcuni sono anche in grado di determinare se il proprio codice originario è stato modificato. Ecco perché craccare un software è molto difficile: in genere dopo aver disassemblato un file eseguibile (ovvero ottenuto il suo codice assembly), bisogna capire a quale sequenza di istruzioni corrisponde la richiesta della password. Per farlo serve un programma detto debugger: esso mostra i dettagli sull’istruzione eseguita istante per istante dal processore e sullo stato dei registri della CPU (e altri dettagli avanzati che ora non vediamo).
Il più popolare debugger per fare questo genere di lavori “sporchi” è OllyDBG: su Youtube esistono decine di video che illustrano come utilizzarlo. Di seguito ne analizziamo uno.
Video illustrativo e procedimento
Per capire il funzionamento di Olly, in un esempio da non ripetere, ci avvarremo di questo video. Poiché utilizzare programmi protetti da licenza è reato, se volete apprendere è meglio usare un programma gratuito “di allenamento”, ce ne sono davvero tanti. Cercate su Google “crackme” e scaricatene uno da esaminare con Olly. Poi seguite le istruzioni del video (chiarite qua sotto):
Ecco le operazioni da eseguire (utilizzare il video come riferimento visivo):
- Installare il software da craccare e il debugger Olly (vedi link sopra per il download).
- Avviare Olly e da esso aprire il file eseguibile principale del software da esaminare (il nostro crackme).
- Dobbiamo capire quale è l’istruzione che esegue il controllo sulla password d’accesso: per farlo clicchiamo col destro del mouse nella finestra principale di Olly e andiamo su Search for > All referenced text string.
- Nella lista di stringhe testuali, ancora un click destro per cercare la parola “registration” (o quello che apparirà nel messaggio di password sbagliata) tra tutte le istruzioni che contengono del testo nel programma esaminato.
- Abbiamo trovato la riga di testo del messaggio di errore: con un doppio click del mouse verremo indirizzati all’istruzione assembly che genera quel messaggio.
- Notiamo che prima di tale istruzione ce n’è una JNZ SHORT (“salta se diverso da zero”), proprio quella che in caso di inserimento corretto del numero seriale fa superare il sistema di sicurezza.
- Sostituiamo JNZ con JMP, in modo da imporre al programma di saltare sempre il controllo della password.
- Concludiamo con un click destro andando su Copy to executable > All modifications per salvare le modifiche. Abbiamo realizzato il crack!
Conclusioni
Il video e la nostra breve guida introduttiva non sono ovviamente esaustivi e potrebbero essere difficili da capire. Inoltre non dimenticatevi mai che craccare un software protetto da licenza è illegale, lo abbiamo visto solo a scopo didattico.
Non perdetevi però d’animo e rileggete tante volte i passaggi, provando a ripeterli. Pian piano imparerete questa tecnica e riuscirete a comprendere meglio quindi il funzionamento delle applicazioni.
salve….cosa bisogna fare se non si trova il testo di errore?
Non trovo la stringa dell’errore, cioè non c’è il testo che invece c’è nella finestra di password errata.
Bellissima guida 🙂 continua così!
steso problema di ciccio
salve io non riesco a trovare la stringa dell errore come faccio?