Image
Wolf 1.04 | ||
Data |
by Kurdt Kobain # ex-Gbyte |
|
15/07/2001 |
Published by Quequero | |
It's better to burn out than to fade away |
Ideale per i NewBies, grazie Kurdt :P |
Gabba Gabba Hey ! |
.... |
|
.... |
Difficoltà |
(x)NewBies ( )Intermedio ( )Avanzato ( )Master |
Introduzione |
A dire la verità davanti a sto programma all'inizio mi ci ero davvero rincoglionito, davanti a tutte quelle chiamate e salti ... che casino! L'unica cosa che avevo individuato era il salto centrale della protezione e la forma del seriale! E poi una sera mi sono stampato il disassemblato della parte che mi interessava (tutta la call prima di quel salto) e mi sono messo a steppare piano piano cercando di capire cosa succedeva ...solo alla fine ecco il seriale esatto!
Tools usati |
URL o FTP del programma |
Notizie sul programma |
Un utilissimo programma per la ricerca su internet e download di immagini e filmati. Veramente non so come funziona, non appena l'ho scaricato ho cominciato con il crack e non ancora l'ho provato ... credo proprio che adesso ci do uno sguardo! L'utilizzo della versione shareware, distribuita sulla rete, presenta un limite di tempo, superato il quale il programma è inutilizzabile, infatti ogni qualvolta viene avviata una ricerca appare una message box che ci avverte che il periodo di valutazione è terminato...bella fregatura!
Essay |
Avviato il programma vediamo un bel pulsantone *Register* che ci permette di entrare nel box x la registrazione. Ci vengono chiesti nome e seriale (il # verrà generato in base al nome inserito) e premendo il bel pulsante OK avremo il chek del nostro #. Apriamo il Sice, bpx getdlgitemtexta, F5, OK nel box e il debugger poppa...bene bene...cosa c'è...no una sfilza di salti e call, mi sa tanto che ora dobbiamo cominciare a steppare e prima di tre ore non finiremo di certo...scherzo :)Nome e seriale vengono caricati in memoria uno dopo l'altro, infatti abbiamo 2 chiamate all'User32 per la funzione getdlgitemtexta. Nella prima parte del listato non abbiamo niente di significativo (lo capiamo perché non viene fatto niente ne con il nome ne con il seriale) fino a quando non arriviamo all'indirizzo 0040C5E:
:0040C05E
lea ecx, dword ptr [ebp+FFFFFF60]
:0040C064
push ecx <- ecx punta il nostro seriale
:0040C065
lea edx, dword ptr [ebp-50]
:0040C068
push edx <- edx invece il nostro nome
:0040C069
call 0040CAB0 <- generazione e confronto seriali
:0040C06E
add esp, 00000008
:0040C071
test eax, eax <- controllo...
:0040C073 jne 0040C0C7 <- ...e salto se uguali (salta se eax = 1)
C'è bisogno di spiegare quello che vedete qua sopra? Credo proprio di no! Allora l'unica cosa da fare è entrare nella call dato che vogliamo trovare il seriale. Nella chiamata abbiamo davanti una sfilza di salti, di chiamate e chi più ne ha più ne metta! L'unica cosa che possiamo fare è passarle tutte e cercare di capire cosa succede ai vari registri passo dopo passo. All'inizio abbiamo delle righe piuttosto interessanti:
:0040CAE1
mov edx, dword ptr [ebp+0C]
:0040CAE4
movsx eax, byte ptr [edx] <- primo char in eax
:0040CAE7
cmp eax, 00000049 <- char confrontato con "I"
:0040CAEA
jne 0040CB0F
:0040CAEC
mov ecx, dword ptr [ebp+0C]
:0040CAEF
movsx edx, byte ptr [ecx+01] <- secondo char in edx
:0040CAF3
cmp edx, 00000057 <- char confrontato con "W"
:0040CAF6
jne 0040CB0F
:0040CAF8
push 0000002D <- 2D = "-"
:0040CAFA
mov eax, dword ptr [ebp+0C]
:0040CAFD
push eax
:0040CAFE call 0041EE60 <- in questa call ricorre ancora il char "-"
Da queste righe capiamo quale deve essere la forma del seriale cioè IW-xxxxxxx dove x sono delle cifre, che strana coincidenza, IW sono proprio le iniziali del programma (Image Wolf). Quindi ricordatevi di questi tre char perché il seriale lo troveremo in forma non completa ovvero solo i numeri che seguono "IW-".
Nelle righe successive vengono fatti vari calcoli sul seriale inserito e sul nome ma non troviamo ancora la generazione del seriale esatto quindi continuiamo fino ad arrivare all'indirizzo 40CCBE:
:0040CCBE
mov edx, dword ptr [ebp-04]
:0040CCC1
push edx <- con ? edx abbiamo il seriale esatto
:0040CCC2
push 0043022C
:0040CCC7
push 00000014
:0040CCC9
lea eax, dword ptr [ebp-40]
:0040CCCC
push eax
:0040CCCD
call 0041EAF0
:0040CCD2
add esp, 00000010
:0040CCD5
mov ecx, dword ptr [ebp-08]
:0040CCD8
add ecx, 00000001
:0040CCDB
push ecx <- puntato da eax abbiamo il seriale inserito
:0040CCDC
lea edx, dword ptr [ebp-40]
:0040CCDF push edx <- puntato da edx abbiamo il seriale giusto
Ecco abbiamo trovato il seriale esatto, ora non ci rimane che disabilitare i bp,
uscire da Sice ed inserire il seriale corretto al posto di quello fasullo ed il
gioco è fatto! Alla chiusura del programma lo stesso crea un file iwolf.ini che
contiene i dati relativi alla registrazione oltre ad ulteriori informazioni, ad
ogni suo riavvio imagewolf controlla il nome ed il seriale e se quest'ultimo non
coincide o non è presente si setta automaticamente in modalità non registrata.
Buon lavoro!
Kurdt Kobain
Note finali |
Davvero una bella soddisfazione! voglio dirvi una cosa, una volta inserito il seriale vi comparirà una finestra con i termini della licenza e tra questi abbiamo:
You may not:
- modify, reverse engineer, disassemble or create derivative works based on the Software.
Troppo tardi ormai l'abbiamo già disassemblato, reversato, crackato, ecc...
Un saluto a tutti quelli della UIC, a Joey Ramone che, x chi non lo sapesse, è scomparso qualche mese fa e a Kurt Cobain che, invece, non si vede più in giro già da sette anni ... non dimenticherò mai il 94! Ciao Kurt, ci manchi tanto!
:( : (
Ah è vero! Un saluto anche a tutti i marziani e alieni vari che si dedicano al reversing:" Å¢¥í ý¾§·°¨ "
Disclaimer |
Vorrei ricordare che il software va comprato e non fregato, dovete registrare il vostro prodotto dopo il periodo di valutazione. Non mi ritengo responsabile per eventuali danni causati al vostro computer determinati dall'uso improprio di questo tutorial. Questo documento è stato scritto per invogliare il consumatore a non registrare illegalmente i propri programmi, e non a fargli fare uso dei tantissimi file crack presenti in rete, infatti tale documento aiuta a comprendere lo sforzo immane che ogni singolo programmatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.
Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.