Domanda

Voglio dire, mi sono sempre chiesto come diavolo qualcuno può sviluppare algoritmi per rompere / imbrogliare i vincoli dell'uso legale in molti programmi shareware là fuori.

Solo per curiosità.

È stato utile?

Soluzione

Oltre ad essere illegale, è un compito molto complesso.

Parlando solo a livello teorico, il modo comune è di smontare il programma per craccare e provare a trovare dove viene controllata la chiave o il codice seriale.

Più facile a dirsi che a farsi dal momento che qualsiasi serio schema di protezione controllerà i valori in più punti e trarrà anche informazioni critiche dalla chiave seriale per un uso successivo in modo che quando pensi di averlo indovinato, il programma andrà in crash.

Per creare un crack devi identificare tutti i punti in cui viene eseguito un controllo e modificare il codice assembly in modo appropriato (spesso invertendo un salto condizionale o archiviando i costanti in posizioni di memoria).

Per creare un keygen devi capire l'algoritmo e scrivere un programma per ripetere esattamente lo stesso calcolo (ricordo una vecchia versione di MS Office il cui seriale aveva una regola molto semplice, la somma della cifra avrebbe dovuto essere un multiplo di 7, quindi scrivere il keygen era piuttosto banale).

Entrambe le attività richiedono di seguire l'esecuzione dell'applicazione in un debugger e provare a capire cosa sta succedendo. E devi conoscere l'API di basso livello del tuo sistema operativo.

Alcune applicazioni fortemente protette hanno il codice crittografato in modo che il file non possa essere disassemblato. Viene decrittografato quando caricato in memoria ma poi si rifiutano di avviarsi se rilevano che è stato avviato un debugger in memoria,

In sostanza è qualcosa che richiede una conoscenza molto profonda, ingegnosità e molto tempo! Oh, ho detto che è illegale nella maggior parte dei paesi?

Se vuoi saperne di più, Google per i + ORC Cracking Tutorials è molto vecchio e probabilmente inutile al giorno d'oggi, ma ti darà una buona idea di cosa significhi.

Comunque, un'ottima ragione per sapere tutto questo è se vuoi scrivere il tuo schema di protezione.

Altri suggerimenti

I cattivi cercano il codice di controllo delle chiavi usando un disassemblatore. Questo è relativamente semplice se sai come farlo.

Successivamente, traduci il codice di verifica chiavi in ??C o in un'altra lingua (questo passaggio è facoltativo). Invertire il processo di controllo delle chiavi ti dà un generatore di chiavi.

Se conosci l'assemblatore ci vuole circa un fine settimana per imparare come farlo. L'ho fatto solo alcuni anni fa (ma non ho mai rilasciato nulla. Era solo una ricerca per il mio lavoro di sviluppo del gioco. Per scrivere una chiave difficile da capire devi capire come le persone si avvicinano al cracking).

Il post di Nils si occupa di generatori di chiavi. Per le crepe, di solito trovi un punto di diramazione e inverti (o rimuovi la condizione) la logica. Ad esempio, testerai per vedere se il software è registrato e il test potrebbe restituire zero in tal caso, quindi saltare di conseguenza. Puoi modificare il "salto" se uguale a zero (je) " per "saltare se non uguale a zero (jne)" modificando un singolo byte. Oppure puoi scrivere nessuna operazione su varie parti del codice che fanno cose che non vuoi fare.

I programmi compilati possono essere disassemblati e con un tempo sufficiente, determinate persone possono sviluppare patch binarie. Una crepa è semplicemente una patch binaria per far sì che il programma si comporti in modo diverso.

In primo luogo, la maggior parte degli schemi di protezione dalla copia non sono terribilmente avanzati, motivo per cui al giorno d'oggi non vedi molte persone che si muovono per conto loro.

Esistono alcuni metodi per farlo. È possibile scorrere il codice in un debugger, che in genere richiede una discreta conoscenza dell'assembly. Usandolo puoi avere un'idea di dove nel programma vengono chiamati i metodi di protezione dalla copia / keygen. Con ciò, puoi utilizzare un disassemblatore come IDA Pro per analizzare il codice più da vicino e provare per capire cosa sta succedendo e come puoi aggirarlo. Ho già superato i beta limitati nel tempo inserendo le istruzioni NOOP sul controllo della data.

Dipende solo da una buona conoscenza del software e da una conoscenza di base dell'assemblaggio. Hak5 ha realizzato una serie in due parti nei primi due episodi di questa stagione su una sorta di nozioni di base di reverse engineering e cracking. È davvero di base, ma probabilmente è esattamente quello che stai cercando.

Un aspirante cracker disassembla il programma e cerca la "protezione dalla copia" bit, in particolare per l'algoritmo che determina se un numero seriale è valido. Da quel codice, spesso puoi vedere quale modello di bit è necessario per sbloccare la funzionalità e quindi scrivere un generatore per creare numeri con tali modelli.

Un'altra alternativa è cercare le funzioni che restituiscono " true " se il numero di serie è valido e "falso" in caso contrario, sviluppa una patch binaria in modo che la funzione restituisca sempre " true " ;.

Tutto il resto è in gran parte una variante di queste due idee. La protezione dalla copia è sempre infrangibile per definizione - a un certo punto devi finire con un codice eseguibile o il processore non è in grado di eseguirlo.

Il numero seriale che puoi semplicemente estrarre l'algoritmo e iniziare a lanciare " Indovina " e cerca una risposta positiva. I computer sono potenti, di solito ci vuole solo un po 'di tempo prima che inizi a sputare colpi.

Per quanto riguarda l'hacking, ero in grado di scorrere i programmi ad alto livello e cercare un punto in cui smetteva di funzionare. Quindi ritorni all'ultimo " Chiama " che ci è riuscito e ci passi dentro, poi ripeti. All'epoca, la protezione dalla copia era in genere scritta sul disco e vedeva se una successiva lettura riusciva (in tal caso, la protezione dalla copia falliva perché usavano bruciare parte del floppy con un laser in modo che non potesse essere scritto).

Quindi era solo una questione di trovare la chiamata giusta e codificare il valore di ritorno corretto da quella chiamata.

Sono sicuro che è ancora simile, ma fanno molti sforzi per nascondere la posizione della chiamata. L'ultima volta che ho provato mi sono arreso perché continuava a caricare il codice sul codice che stavo passando da solo, e sono sicuro che da allora è diventato molto più complicato.

Mi chiedo perché non si limitino a distribuire binari personalizzati, dove il nome del proprietario è memorizzato da qualche parte (crittografato e offuscato) nel binario o meglio distribuito su tutto il binario .. AFAIK Apple lo sta facendo con i file musicali dallo store di iTunes, tuttavia è troppo semplice per rimuovere il nome dai file.

Suppongo che ogni crack sia diverso, ma immagino che nella maggior parte dei casi qualcuno spenda molto tempo nel debugger per rintracciare l'applicazione in questione.

Il generatore seriale fa un ulteriore passo avanti analizzando l'algoritmo che controlla la validità del numero seriale e lo esegue il reverse engineering.

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