Zoom Icon

Soluzione Crackme 17

From UIC Archive

Crackme n.17 : VB5, trova il serial.

Contents


Soluzione Crackme 17
Author: ValerioSoft
Email: ValerioSoft(AT)tin.it
Website:
Date: 20/02/2007 (dd/mm/yyyy)
Level: No brain needed
Language: Italian Flag Italian.gif
Comments: Proverbio Cinese : Un albero il cui tronco non riesci ad abbracciare ha inizio da un delicato germoglio.



Introduzione

Benvenuti al mio quarto Tute :-) Bello il reversing, no???


Tools


Notizie sul CrackMe N.17

Questo è un crackme scritto da The Outlaws ed ha diverse differenze con i CrackMe trattati nei precedenti Tute.


Essay

Oggi sulla parte relativa al patching sarò più schematico dato che è il programma è patchabile in 0,1 secondi!!!Avviamo l'applicazione e come punto debole individuiamo la stringa Nope. That's not the one! che compare se premiamo il pulsante Check It!

Come punto di partenza non è male, avviamo Ollydbg ed apriamo il programma in questione, controlliamo le stringhe con il solito metodo e dirigiamoci alla riga in cui viene passata la stringa UNICODE Nope. That's not the one! L'istruzione è la 00410774, adesso disassembliamo il programma con W32dasm e andiamo alla riga 00410774, cerchiamo il primo JUMP che ci porta a quel pezzo di codice :

Referenced by a (U)nconditional or (C)onditional Jump at Address: |:00410731(C)

00410744 8D4DE4 lea ecx, dword ptr [ebp-1C]

Beh l'istruzione 00410731 è troppo vicina per poter essere quella giusta e poi il JUMP anche se viene eseguito ci porta lo stesso all'errore quindi dobbiamo cercare ancora più su

Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004106D3(C)

004106E6 FF75E8 push [ebp-18]

L'istruzione che ci porta li è la 004106D3 può essere quella giusta, allora piazziamo un Breakpoint su questa riga ed eseguiamo il programma, premiamo il pulsante Check It! e Ollydbg prende il controllo. Il JE (Jump if equal) è attivo quindi ci porta probabilmente all'errore, modifichiamo il Flag Z da 1 a 0 in modo tale da impedire il salto ed avviamo l'applicazione con il Play!

CONGRATULATIONS

Ora non vi resta che patchare il programma con HIEW sostituendo l'opcode 74 53 in 90 90 visto che il nostro intento è quello di non farlo mai saltare.

Il Serial Fishing

Avete visto com'è strutturato il programma? Si inserisce il serial e si preme il pulsante di Check, cosa vi fa pensare tutto ciò??? :-D

  1. Nella migliore delle ipotesi il serial è univoco e non viene calcolato da nessuna parte.
  2. Nella peggiore delle ipotesi (o almeno spero sia cosi :-P) il serial viene calcolato sulla

base di qualche strano trucco da circo.

Seguiamo la prima ipotesi, come avrete sicuramente imparato il serial viene solitamente confrontato con la parola inserita per questo dobbiamo piazzare un breakpoint su qualche funzione per il confronto di stringhe (questo è quello che facciamo di solito!!!). Apriamo in Ollydbg le Intermodular Calls e ci accorgiamo che l'unica funzione per il confronto è la vbaStrCmp, allora piazziamo il breakpoint ed avviamo l'applicazione! Premiamo il pulsante di Check e Ollydbg prende il controllo. Guardate cosa viene passato alla funzione:

Referenced by a (U)nconditional or (C)onditional Jump at Address: |:004106D3(C)

004106E6 FF75E8 push [ebp-18] 004106E9 6850014100 push 00410150 // UNICODE "2hard4u2crackm8"

Reference To: MSVBVM50.__vbaStrCmp, Ord:0000h

004106EE E8C509FFFF Call 004010B8

Non sarà mica il serial da inserire???? Pensiamo un pò!!!!!!!!!

Non pensateci troppoooooooooo

Sto aspettando.......................

Guardate la locazione che contiene la stringa UNICODE : 00410150, non vi dice niente???

Fa parte del programma stesso quindi è una costante inserita nel file.Allora non ci resta che riavviare il programma ed utilizzare la stringa 2hard4u2crackm8 come serial.

CONGRATULATIONS

Hey questo CrackMe e davvero una cacata :-D, mi ha fatto passare pure l'appetito!!!


Note Finali

Un saluto a tutti quelli che mi conoscono!!! Ciaoooooooooooooooooo alla proximaaaaaaaaa

ValerioSoft


Disclaimer

I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.

Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevole e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.