Zoom Icon

Soluzione Crackme 35

From UIC

Crackme n.35 : Il terzo CrackMe scritto da ILM@2000

Contents


Infos
Author: ValerioSoft
Email: ValerioSoft(AT)tin.it
Website:
Date: 05/10/2007 (dd/mm/yyyy)
Level: Half brain is enough
Language: Italian Image:Flag_Italian.gif
Comments: La rosa tra le oscure foglie di un giardino incolto è come la speranza tra le sofferenze. :-D



Introduzione

Ciaoooooooooo, benvenuti al mio undicesimo tuteeeee!!! :-D


Tools



Notizie sul CrackMe N.23

Regolamento:
NO Patching!!! Utilizzare solo SIce o SmartCheck


Essay

Devo dire che l'unica difficoltà di questo crackMe è utilizzare debugger diversi da Olly!!! :-D

Dato che sono un pò deluso, vi dico cosa succede e poi passo al prossimo CrackMe. Allora scrutando nelle Intermodular Calls saltano subito all'occhio le numerose vbaStrCmp che per chi non lo sapesse servono in Visual Basic per il confronto tra stringhe. Allora piazziamo un bel breakpoint tutte le funzioni di questo genere. Inseriamo dei fake number in modo da riempire tutte le caselle disponibili e premiamo il pulsante di registrazione!!!

I primi 9 vbaStrCmp servono a controllare se si preme il pulsante di registrazione senza aver inserito dei valori, questo si può intuire anche dal fatto che se all'istruzione 004072EC non avviene il salto ci viene mostrato il messaggio Inserire i Product Number e la Password.


004072EC JE 004073D8
004072F2 MOV EBX,DS:MSVBVM60.__vbaVarDup // MSVBVM60.__vbaVarDup
004072F8 MOV ECX,80020004
004072FD MOV SS:[EBP-94],ECX
00407303 MOV EAX,0A
00407308 MOV SS:[EBP-84],ECX
0040730E LEA EDX,SS:[EBP-10C]
00407314 LEA ECX,SS:[EBP-7C]
00407317 MOV SS:[EBP-9C],EAX
0040731D MOV SS:[EBP-8C],EAX
00407323 MOV DWORD PTR SS:[EBP-104],004050A4 // UNICODE "Attenzione!"
0040732D MOV DWORD PTR SS:[EBP-10C],8
00407337 CALL EBX // MSVBVM60.__vbaVarDup
00407339 LEA EDX,SS:[EBP-FC]
0040733F LEA ECX,SS:[EBP-6C]
00407342 MOV DWORD PTR SS:[EBP-F4],00405050 // UNICODE "Inserire i Product Number
// e la Password"


Poi ci si trova dinanzi ad altri 8 vbaStrCmp che ci rivelano i valori da inserire nei 2 Product Number:


0040798F PUSH EDX // valori nell'ottava casella
00407990 PUSH 00405130 // UNICODE "9874"
00407995 CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
0040799B MOV EBX,EAX
0040799D MOV EAX,SS:[EBP-30]
004079A0 NEG EBX
004079A2 SBB EBX,EBX
004079A4 PUSH EAX // valori della settima casella
004079A5 INC EBX
004079A6 PUSH 00405120 // UNICODE "1222"
004079AB NEG EBX
004079AD CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
004079B3 MOV ECX,SS:[EBP-2C]
004079B6 NEG EAX
004079B8 SBB EAX,EAX
004079BA PUSH ECX // valori della sesta casella
004079BB INC EAX
004079BC PUSH 00405110 // UNICODE "1111"
004079C1 NEG EAX
004079C3 AND EBX,EAX
004079C5 CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
004079CB MOV EDX,SS:[EBP-28]
004079CE NEG EAX
004079D0 SBB EAX,EAX
004079D2 PUSH EDX // valori della quinta casella
004079D3 INC EAX
004079D4 PUSH 00405100 // UNICODE "7894"
004079D9 NEG EAX
004079DB AND EBX,EAX
004079DD CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
004079E3 NEG EAX
004079E5 SBB EAX,EAX
004079E7 INC EAX
004079E8 NEG EAX
004079EA AND EBX,EAX
004079EC MOV EAX,SS:[EBP-24]
004079EF PUSH EAX // valori della quarta casella
004079F0 PUSH 004050F0 // UNICODE "4856"
004079F5 CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
004079FB MOV ECX,SS:[EBP-20]
004079FE NEG EAX
00407A00 SBB EAX,EAX
00407A02 PUSH ECX // valori della terza casella
00407A03 INC EAX
00407A04 PUSH 004050E0 // UNICODE "6548"
00407A09 NEG EAX
00407A0B AND EBX,EAX
00407A0D CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
00407A13 MOV EDX,SS:[EBP-1C]
00407A16 NEG EAX
00407A18 SBB EAX,EAX
00407A1A PUSH EDX // valori della seconda casella
00407A1B INC EAX
00407A1C PUSH 004050D0 // UNICODE "1845"
00407A21 NEG EAX
00407A23 AND EBX,EAX
00407A25 CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp
00407A2B NEG EAX
00407A2D SBB EAX,EAX
00407A2F INC EAX
00407A30 NEG EAX
00407A32 AND EBX,EAX
00407A34 MOV EAX,SS:[EBP-18]
00407A37 PUSH EAX // valori della prima casella
00407A38 PUSH 004050C0 // UNICODE "2222"
00407A3D CALL DS:MSVBVM60.__vbaStrCmp // MSVBVM60.__vbaStrCmp

Ecco i Product Number da inserire:


Product Number n.1: 2222 1845 6548 4856

Product Number n.2: 7894 1111 1222 9874

Andiamo ad inserire i Product Number appena trovati ed inseriamo un serial numerico a caso e premiamo il pulsante di registrazione.


00407ADF MOV EAX,SS:[EBP-18] // carica in EAX la locazione che contiene il serial
// inserito
00407AE2 PUSH EAX
00407AE3 CALL DS:MSVBVM60.__vbaR8Str // MSVBVM60.__vbaR8Str
00407AE9 FCOMP QWORD PTR DS:[401118] // confronta il serial nel coprocessore con il valore
// della locazione 00401118
00407AEF FSTSW AX // memorizza la word di stato del coprocessore in AX
00407AF1 TEST AH,40 // AND tra AH e 40, se il risultato è 0 setta lo Zflag a 1
00407AF4 JE SHORT 00407AFD

Arrivati all'istruzione 00407AE9 osserviamo tramite la barra di stato il valore contenuto nella locazione 00401118, il valore è espresso in notazione floating point e corrisponde al valore 10841. Abbiamo trovato anche il serial corretto.

Proviamo ad inserire i nuovi valori:


Product Number n.1: 2222 1845 6548 4856

Product Number n.2: 7894 1111 1222 9874

Serial: 10841

Bravissimo! Hai registrato il programma! Al prossimo CrackMe! Ciauzz! ILM©2000


Note Finali

Un saluto caloroso a va a tutta la UIC!!!
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 malevoli 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.