CrackMe - Versione stampabile +- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi) +-- Forum: Programmazione (https://www.making-videogames.net/giochi/Forum-Programmazione) +--- Forum: Altri Linguaggi di Programmazione (https://www.making-videogames.net/giochi/Forum-Altri-Linguaggi-di-Programmazione) +---- Forum: Reversing Engineering (https://www.making-videogames.net/giochi/Forum-Reversing-Engineering) +---- Discussione: CrackMe (/thread-CrackMe) Pagine:
1
2
|
CrackMe - steve - 05-03-2011 Con Viliteschi (spero di aver scritto bene il nome XD ) è uscita fuori una mezza discussione, alla fine ha detto che è capace di creare crack. Così gli ho proposto un esercizio, solo a scopo informativo (legale): io gli faccio un programmino e lui prova a crackkarlo (passatemi il termine). Se riesce a farlo potrebbe spiegarci (ripeto: solo a scopo informativo per vedere come funziona il reversing sui nostri programmini) come riesce a farlo. Ecco il primo programmino (a dire il vero sarebbe il secondo), penso che si possa considerare abbastanza semplice (è più semplice del primo) http://www.megaupload.com/?d=ZU4RGALZ RE: CrackMe - DIABLO ROSSO - 05-03-2011 steve il primo file che mi ai dato da scoprire password. pero ce un problema io sno abituato ad usare dede e Hiew726w.pero io lo facevo sun windows xp adesso su windows 7 mi da dei problemi quindi non lo posso scoprire per 30 minuti almeno 2 ore scusa <assembly xmlns="urnchemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urnchemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> [EDIT by Steve] Aggiungo il messaggio postato sull'altro topic steve il primo file che mi ai dato da scoprire password ho scoperto come lo ai fatto ecco a te i codici <assembly xmlns="urnchemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urnchemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> </assembly> RE: CrackMe - steve - 05-03-2011 E la password sarebbe? Sei riuscito a saltare la parte di codice che richiede la password e far apparire il messaggio di conferma? PS. Ti ho cancellato il messaggio sull'altro thread, visto che era offtopic. Te lo riporto qui. RE: CrackMe - Riddick - 05-03-2011 Ma questo è l'assembly, quindi non hai craccato un bel nulla cosi XD. RE: CrackMe - steve - 05-03-2011 Eh si, pure a me sembra un codice xml che dice soltanto che il programma non richiede i privilegi di amministratore... RE: CrackMe - Lorenz - 05-03-2011 cioè quindi se io ti passo un programma fatto da me in cui richiedo una password riesci a crackarlo ? allora spetta che te ne passo uno XD RE: CrackMe - DIABLO ROSSO - 05-03-2011 riddick ce qualcosa che non va e sto imaparando ad usare nuovi programmi. io usavo -- DeDe e Hiew726w pero Hiew726w non funziona DeDe non mi fa l analisi forse perche io lo usavo con xp sto cercando un nuovo programma scusate. RE: CrackMe - Lorenz - 05-03-2011 usarlo in modalità compatibilità per xp o vista o quello che è ? RE: CrackMe - steve - 06-03-2011 Se volete un indizio avvisatemi... RE: CrackMe - Predator - 15-07-2011 dovrebbbe essere: VediamoSeScopriteCosaHoScritto pero' non pare funzionre bho Predator RE: CrackMe - steve - 15-07-2011 (15-07-2011, 05:37 PM)Predator Ha scritto: dovrebbbe essere: VediamoSeScopriteCosaHoScritto Non funziona perché non è quella la password, è un po' meno scontata, però non sei fuori strada... ti manca giusto un passaggio e trovi la soluzione. Fortuna che non ho cancellato il progetto, come mi è di pessima abitudine fare, altrimenti col piffero che mi ricordavo la soluzione XD PS. benvenuto nella community RE: CrackMe - Predator - 15-07-2011 la password è 3051 LOL quando ho risposto dovevo essere davvero stanco PS: grazie del benvenuto (05-03-2011, 03:15 PM)Lorenz Ha scritto: cioè quindi se io ti passo un programma fatto da me in cui richiedo una password riesci a crackarlo ? allora spetta che te ne passo uno XD Lorenz, magari pubblicalo nel forum cosi ci proviamo tutti RE: CrackMe - Lorenz - 16-07-2011 Umhhh penso di non averlo più...ma non ci metto tanto a crearti un programma in vb.net che richiede la pass RE: CrackMe - Predator - 16-07-2011 vbnet, c#, vc++, asm, delphi vedi tu a seconda del linguaggio utilizzato il codice nell'exe è notevolmente diverso, occorre sapere il comportamento di reversing di tutti i linguaggi. magari fai un programma con gui e non una triste applicazione console RE: CrackMe - Lorenz - 16-07-2011 vb.net e c# lo posso fare gli altri non li conosco tanto xD intanto ne faccio uno base, magari quando un olo risolve mi manda un PM RE: CrackMe - steve - 16-07-2011 Prova con questo: http://www.megaupload.com/?d=MA1HYDWS Non so quanto si possa ritenere più difficile rispetto il primo... se mi dai qualche dritta su cosa rende il lavoro difficile a un reverser posso provare a farne uno un po' più difficile. Il prossimo provo a farlo con gui. RE: CrackMe - Predator - 16-07-2011 eccolo! l'ho scaricato e mi par di aver capito che il programma confronta l'MD5 delle stringa inserita, pertanto se questo è corretto ci sono solo due modi per superare questo crackme: decriptare l'hash d8bd309f095c7fdd320d0f30ae2ae788, oppure patcharlo Predator RE: CrackMe - steve - 16-07-2011 L'MD5 viene calcolato in runtime, quindi (premetto che non so niente di reversing) credo che sia possibile trovare la password senza patch e senza decriptare. Correggetemi se sbaglio... RE: CrackMe - Predator - 16-07-2011 se l'md5 viene calcolato a runtime si, pensavo fosse preinputato. intanto linko il crackme crakkato http://www.mediafire.com/?529ruo7ck944z RE: CrackMe - Predator - 17-07-2011 "inserisci password: " è la pass LOLLLLL RE: CrackMe - steve - 17-07-2011 eheh... ero indeciso se utilizzare "esatto", "sbagliato" oppure "inserisci password: " XD Avevo pensato che evitando di dichiarare una variabile dedicata alla password rendevo il reversing meno intuitivo... In questo programma, a differenza del primo, ho allocato le variabili dinamicamente. Hai riscontrato cambiamenti sostanziali (più facile | più difficile) rispetto il primo o non l'hai risolto al primo colpo solo perché non ti era venuto in mente che avrei potuto nascondere la password in questo modo? RE: CrackMe - Predator - 17-07-2011 rispetto l'altro è piu' complesso, non piu' difficile ma piu' complesso. A livello di risoluzione l'unico motivo che mi ha fatto perdere 10 minuti di piu' è che la password era la frase di richiesta e non una vera e propria pass, ma ste cose hanno vita molto breve RE: CrackMe - steve - 18-07-2011 Ecco il terzo: http://www.megaupload.com/?d=ZDXRRJVY Ho evitato l'interfaccia utente (eh si... un altro noioso programma da consolle) e sono rimasto su programmi da poche righe di codice. Almeno inizialmente preferirei cercare di capire su cosa è meglio focalizzare l'attenzione, in questo modo evito di perder tempo a "incasinare" parti totalmente inutili. Aspetto feedback! RE: CrackMe - Predator - 18-07-2011 oh bene, questo è uno di quei crackme che si fa molto prima a patchare che keygennare. infatti l'ho crakkato modificando 1 solo byte. 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 RE: CrackMe - steve - 18-07-2011 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: 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' 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 ), ti posto il codice incriminato: Codice PHP: void ret(std::string *p_pwd) 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. RE: CrackMe - Predator - 18-07-2011 heheeheh grazie per il source avevo visto anche la radice quadrata. io non sono bravissimo con l'arte del keygenning, e siccome avevi usato numeri con molte virgole, sqrtf(348935.59375) + 0.00001373140844) ci avrei messo sicuramente diverse ore. RE: CrackMe - Jonathan Archer - 19-07-2011 Prima di cimentarmi con un CrackMe complicato (é da me ) prova e vedi se trovi difficoltà con gli exe di Dark Basic http://www.megaupload.com/?d=2HUJKCSK L'ho scritto in un oretta quindi é di una facilità estrema ma é solo per provare se ci sono impedimenti. Fammi sapere RE: CrackMe - Predator - 19-07-2011 E' strapieno strapieno strapieno di referenze e codice inutili ai fini del codice. c'è anche una infinità di riferimenti alle directx, e dll di ogni genere. Probabilmente perchè è fatto per giochi? Inoltre decomprime nella temp una serie di dll e file. Al punto della password ho trovato una valanga di IF, non so se li hai fatti te. ho decisamente patchato ed è uscito La password sembra giusta. Di certo DarkBasic è un linguaggio che non sa cosa sia l'ottimizzazione. del resto 712 Kb di codice compresso per fare un if è decisamente esagerato. Neppure VB6 arriva a questi livelli LOL RE: CrackMe - Jonathan Archer - 19-07-2011 Si Dark Basic é fatto per i giochi quindi sfiderei che non ci sono riferimenti a directx o dll, ma alla fine bisogna essere sempre flessibile nel proprio "lavoro" Codice: INPUTPASS: Qui c'è l'input iniziale Codice: If len(P$)=5 Queste dovrebbero essere la valanga di IF che dovresti aver trovato ed isolato che gestiscono l'analisi dell'input iniziale Codice: Print "Password Errata!" Se qualcosa non torna si torna all'Etichetta iniziale Difficoltà? RE: CrackMe - Predator - 19-07-2011 heheh allora la valanga di if li avevi proprio scritti te difficoltà: se togliamo la grande confusione creata da darkbasic è veramente facile, sia keygennare che patchare :-) |