• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
CrackMe
#25
Ho usato una tecnica simile a quella descritta dal tuo secondo esempio nell'altro post:

(18-07-2011, 02:34 PM)Predator Ha scritto: esempio2:
trasformi il seriale inserito xorando il suo valore con un numero e ne confronti il risultato. in questo modo non confronti il seriale inserito ma uno trasformato.

Al posto di xorare ho inventato un algoritmo ricorsivo molto semplice, l'ho anche messo in thread, non per un guadagno in prestazioni (che teoricamente dovrebbero calare), ma per vedere cosa succedeva (niente di diverso, visto che l'hai trovato con la stessa facilità).
Il mio primo pensiero è stato che probabilmente sarebbe stato impossibile da prendere, se non creando un keygen bruteforce con l'algoritmo reversato (dopodiché è solo questione di tempo, forse anche parecchio tempo visto che la password può essere alfanumerica e di chissà che lunghezza). È anche probabile che ci siano soluzioni multiple, vista la semplicità dell'algoritmo.

(18-07-2011, 02:34 PM)Predator Ha scritto: oh bene, questo è uno di quei crackme che si fa molto prima a patchare che keygennare. infatti l'ho crakkato modificando 1 solo byte.

Eh si... quando l'ho fatto non avevi ancora postato gli esempi di come evitare l'uso di un semplice if, quindi è il solito controllo if a==b con il solo accorgimento di non scrivere la password in chiaro.

(18-07-2011, 02:34 PM)Predator Ha scritto: mentre per quanto riguarda l'operazione di keygenning, inputando (per esempio) la stringa 'predator'
ci sono due cicli.
legge la lunghezza, poi parte dalla fine smistando la posizione dei caratterei dispari e pari (oppure uno no e uno si, il senso è il medesimo. potrebeb anche essere un for i con step -2),
decrementa il contatore
ignora la 'r' parte percio' con la 'o' che e moltiplica il suo valore decimale per l'attuale posizione del puntatore del ciclo
cioè 111 x 6 = 666
poi decrementa 2 volte e passa alla lettera 'a'
97x4=388
e cosi' via (mi pare salti la prima lettera)

poi parte nel senso opposto, da sinistra verso destra
sempre saltando 1 carattere (partendo dalla d) somma al suo valore decimale 48
fino all'ultima lettera

ho visto che fa altre operazioni di volore float, di divisaione o moltiplicazione, per alla fine confrontare con 68.
ma sinceramente non ho voglia di smazzarmi i conti al contrario, sarebbe solo quesione di tempo, nulla di difficile.
Non ho incontrato schemi di protezione Smile

Visto che non sei intenzionato di perder tempo dietro un algoritmo stupido, ma di lungo reversamento (buono a sapersi in caso mi dovesse capitare di proteggere qualcosa Big Grin ), ti posto il codice incriminato:

Codice PHP:
void ret(std::string *p_pwd)
{
    if((
sqrtf(348935.59375) + 0.00001373140844) == elaboraPwd(p_pwd->c_str(), p_pwd->size(), 9)) 
        
std::cout << "esatto";
    else 
        
std::cout << "sbagliato";
}

double elaboraPwd(const char pwd[], short lengthdouble v)
{
    if(
length == 0
        return 
v;
    else if(
length 2// dispari
        
double(pwd[length] + '0') / length elaboraPwd(pwdlength-1v);
    else 
//pari
        
pwd[length] * length elaboraPwd(pwdlength-1v); //ora che rivedo il codice mi accorgo che manca il cast XD lol, pazienza
    
return v;


Nel main viene chiamata la funzione ret con un puntatore alla stringa inserita dall'utente come parametro.
Per costruirlo mi è bastato inventare una password (ho scelto: TopSecret; avrei anche potuto sceglierla alfanumerica, tu non potevi saperlo) e passarla come parametro a elaboraPwd (mettendo anche la lunghezza e un numero random [ho scelto il 9] come parametri). Il numero uscito l'ho elevato al quadrato e l'ho inserito come costante nel programma; nel programma il numero vine messo sotto radice quadrata (questi ultimi 2 passaggi quasi inutili, servono solo a mascherare ancor più la password).
Curioso notare che facendo sqrtf(pow(numero_elaborato_secondo_la_password_da_me_scelta)); c'è un errore di approssimazione... infatti ho dovuto aggiungere 0.00001373140844 per far corrispondere i calcoli.

Anche avendo il codice a disposizione, il modo migliore per beccare la password sarebbe un bruteforce... ad eseguire i calcoli alla rovescia non ti passa più (sempre che si riesca a fare).
Non ho provato a farlo, ma penso che per un algoritmo così semplice sia questione di minuti per un bruteforce.
Lo ammetto, sono stato un po' bastardo a dar la possibilità di password con lettere e numeri XD
a scriverlo è un algoritmo proprio semplice... a reversarlo non saprei.
 
Rispondi
  


Messaggi in questa discussione
CrackMe - da steve - 05-03-2011, 02:31 AM
RE: CrackMe - da DIABLO ROSSO - 05-03-2011, 04:31 AM
RE: CrackMe - da steve - 05-03-2011, 02:08 PM
RE: CrackMe - da Riddick - 05-03-2011, 02:56 PM
RE: CrackMe - da steve - 05-03-2011, 02:58 PM
RE: CrackMe - da Lorenz - 05-03-2011, 03:15 PM
RE: CrackMe - da DIABLO ROSSO - 05-03-2011, 04:48 PM
RE: CrackMe - da Lorenz - 05-03-2011, 04:52 PM
RE: CrackMe - da steve - 06-03-2011, 03:31 PM
RE: CrackMe - da Predator - 15-07-2011, 05:37 PM
RE: CrackMe - da steve - 15-07-2011, 07:02 PM
RE: CrackMe - da Predator - 15-07-2011, 09:50 PM
RE: CrackMe - da Lorenz - 16-07-2011, 01:27 PM
RE: CrackMe - da Predator - 16-07-2011, 01:32 PM
RE: CrackMe - da Lorenz - 16-07-2011, 01:36 PM
RE: CrackMe - da steve - 16-07-2011, 01:52 PM
RE: CrackMe - da Predator - 16-07-2011, 04:41 PM
RE: CrackMe - da steve - 16-07-2011, 04:46 PM
RE: CrackMe - da Predator - 16-07-2011, 04:54 PM
RE: CrackMe - da Predator - 17-07-2011, 05:25 PM
RE: CrackMe - da steve - 17-07-2011, 06:11 PM
RE: CrackMe - da Predator - 17-07-2011, 07:35 PM
RE: CrackMe - da steve - 18-07-2011, 01:34 AM
RE: CrackMe - da Predator - 18-07-2011, 02:34 PM
RE: CrackMe - da steve - 18-07-2011, 03:30 PM
RE: CrackMe - da Predator - 18-07-2011, 03:35 PM
RE: CrackMe - da Jonathan Archer - 19-07-2011, 10:45 AM
RE: CrackMe - da Predator - 19-07-2011, 02:09 PM
RE: CrackMe - da Jonathan Archer - 19-07-2011, 04:25 PM
RE: CrackMe - da Predator - 19-07-2011, 10:56 PM
RE: CrackMe - da Jonathan Archer - 21-07-2011, 02:43 PM
RE: CrackMe - da Predator - 21-07-2011, 04:21 PM
RE: CrackMe - da Jonathan Archer - 22-07-2011, 11:21 AM
RE: CrackMe - da steve - 22-07-2011, 02:41 PM
RE: CrackMe - da Predator - 22-07-2011, 07:24 PM

Vai al forum:


Browsing: 1 Ospite(i)