CrA(ck)zz.. dolci...
Tecnica usata:
Lettura dei Tute UIC..(circa 2000)...Culo e Supposte..;)


Data

by "eTTax"

 

 

UIC's Home Page

Published by Quequero

Vi dono questo "presente" :

Bravo eTTax, hai fatto un buon lavoro.....Un multi-tute oserei dire :)

Io sono
Tu sei
Egli è
....... hihihihihihi
UIC's form
on irc.azzurra.it  #crack-it eTTax
UIC's form

Difficoltà

(x)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Azz...guagliò...questo è il mio primo tute...e forse alla fine sarà anche l'ultimo. Il tute riguarda 3 Crackme che ha scelto Tin.. per avviarci..nel mondo del Cracking.. dove...nop...jmp...e subboste..varie (ehm..sono raffreddato)....consigliano di camminare strisciando il muro...e chi si ferma è perduto....hihihihihi anzi  ahi..ahi..ahi.


 
CrA(ck)zz.. dolci...
Written by eTTax

Introduzione

Eliminazione del Nag Screen nel Crackme1, e trovare il serial dei  Crackme2 e 3. Dopo aver letto i circa 2000 tute della UIC..e rotto le palle a Que, Tin....e a chi mi capitava di turno nel chan..#Crack-it..( Nerds... ph0...Andre. ..ecc..) ..e stranamente quando mi collego ultimamente mi ci ritrovo sempre da solo...:).. chissà perchè...boh...;-) son riuscito a fare il lavoretto in 60 minuti...hihihihihi ..e che Azz...mica mi chiamo Svelt...

Tools usati

- SoftIce
- Hiew

URL o FTP del programma

E' il secondo Corso Newbies..che si trova sul sito di Quequero...e  se leggete stò tute ... lo conoscetè già...

Notizie sul programma

I crackme.. non sono prg...sono solo assaggini....spiedini....suppostine...che mettono alla prova ..il c.. ehm...il crackman...(Azz... che parolona..)....verginiello.. fino alla rottura della fre....e che  Azz.. vi devo dire tutto!!!...

Essay

Azz... mò viene il bello...iniziamo...I Nag Screen.. che palle!...clikka..qua..leggi....clikka là....tutto sto tempo.. io non ce l'ho...e perciò una bella Nagstectomia...hihihihihihihi....eT...Tax!!....mandiamo il virile Nag.. nella corale delle voci bianche della UIC.. (Que..non fraintendermi.....ehm...qui alla fine ci scappa... il morto.). Tin nel suo tute ha usato il Wdasm.. io invece opto...per il Sice...xchè?... xchè...mi piace...il "tempo reale".. "il presente"....Io sono.. tu sei.. egli è...=;)))...scusa  Que.. che ci vuoi fà...mi piace scherzare o meglio come si dice , da queste parti in italiano.. puro,  "pazziare" . Ok... basta.. siamo seri...che Azz....
Allora, di solito i Nag Screen... sono richiamati da una call o da un jmp..almeno questo è quello che dicono tutti i tute che ho letto sin d'ora...vediamo se dicono la verità...la prima cosa da fare è, ovviamente, lanciare il Crackme1 e vedere cosa fa..... ...eT...Tax!!!.. eccolo il protagonista del nostro "Serial"....hihihihihihihi....vediamo il Nag comparire con tanto di caption "CrackMe 1.0 by Phox"...(sarà il Papà.. di ph0..?... boh)...ecc..ecc.. clikkando sul tasto OK...ed ecco il nostro obiettivo che ci appare ai nostri blueyes.. una finestra con il solo tasto 'About'. Bene abbiamo visto cosa fa il prg....adesso tocca a Sice, premetto che sono un Newbies in tutti sensi,  conosco..un pò di Asm...ai tempi dello Z80... usando un C64.. insomma praticamente...questo è la mia prima esperienza di crack..(ma non sono verginiello..hehehehe)... quindi  tutto ciò che dirò..sono stronzate.. nient'altro che stronzate... lo giuro!!!!. Allora dobbiamo "trappare", "brekkare", come azz.. volete dire, un setpoint su una funzione API...che richiama il Nag Screen...conoscete le API.? che fanno?...e che Azz...certo!!!.. le Api..volano e pungono se gli rompi le palle!!!!....(ma ce l'hanno le palle?)=;)...naaaaaaa sbagliato...le API...sono delle funzioni che sono utilizzate dai prg che girano sotto il Winzoz..quindi la creazione delle finestre, l'inserimento di testo, messaggi .etc..utilizzano tutti queste funzioni.  Chiaro?...per approfondire la conoscenza delle Api e della loro struttura..è consigliabile scaricarsi qualche buon Api References sulla rete. Quindi dobbiamo inserire un breakpoint su una funzione Api....in genere si usa mettere un breakpoint sulle funzioni Getwindowtexta o su Getdlgitemtexta quando dobbiamo inserire un testo tipo nome o un numero seriale... ma qui.. non c'è nessun testo da inserire allora come Azz.. facciamo?...dove mettiamo il BPX in Sice?..ecco che ci vien in aiuto una utility di Winzoz..."Anteprima"....si clikka sul prg con il tasto destro del mouse ... eT...Tax!!!.. appare una finestra che ci indica tutte le funzioni che vengono utilizzate dal prg. Nella sezione Import Table... troviamo ciò che ci interessa, inseriamo in Sice il breakpoint sulla prima funzione che vediamo, la GetModuleHAndleA...quindi  CTRL+D per entrare nel Sice BpxGetModulehandlea per settare il breakpoint,  clikkiamo sul prg..eT...Tax!!!   il Sice poppa nella funzione..che abbiamo brekkato, lo si vede nella scritta sulla riga verde KERNEL32!GetModuleHandleA......chiaro?..ora però... a noi interessa entrare nel processo del prg.. CrackMe1.. e steppare il codice come facciamo?..seguitemi...
1) usiamo il tasto F11 per uscire dalla chiamata della funzione su cui abbiamo inserito il BPX...
2) adesso ci troviamo sulla linea di codice successiva alla call...(azz... che palle scrivere..) e per vedere se ci troviamo nel codice del prg CrackMe1.. dobbiamo osservare la linea verda in bassa di Sice che ci indica in quale processo ci troviamo in questo momento... uelà.. ci indica CrackMe1... bene vuol dire che stiamo nel codice del prg...e stiamo operando nel verso giusto..
3) togliamo il Breakpoint sulla funzione.. con Bc*.. e si comincia a steppare il codice... adesso ci troviamo qui..e dobbiamo individuare il punto in cui viene chiamata la Messageboxe del Nag..
:00401002           Call 004011CD


:00401007           mov dword ptr [00402044], eax

:0040100C           push 00000030

:0040100E           push 00402079     <-- salva nello stack  la caption del Nag "Crackme 1.0 ;
                                  |
:00401013           push 0040208D     <--- salva nello stack la stringa "Plz registrate  this";

:00401018           push dword ptr [00402048]
                                  |
:0040101E           Call 004011FD     <--- qui avviene la chiamata della funz MsgBox del Nag ;

:00401023           mov dword ptr [00402000], 00004003

:0040102D           mov dword ptr [00402004], 0040113D

:00401037           mov dword ptr [00402008], 00000000

:00401041           mov dword ptr [0040200C], 00000000

:0040104B           mov eax, dword ptr [00402044]

:00401050           mov dword ptr [00402010], eax

:00401055           push 00007F04

:0040105A           push 00000000

 alla riga 0040101E  c'è la chiamata che fa comparire il Nag..beh.. indossiamo camice e mascherina e cominciamo ... bisturi......divaricatore...forbici e zac...=:-) (.....ehehehe ho proprio la vocazione del chirurgo)...possiamo eliminare la call in due modi nopparla o jumparla...quello più semplice in questo caso è inserire un salto incondizionato...elimando tutta la parte di codice che interessa la call...osservando il disassemblato inseriremo il jump alla locazione 0040100C e saltare  alla locazione 00401023... quindi dovremo scrivere:

:0040100C            jmp 00401023

Okki... apriamo il Wdasm e carichiamo il prg... con un bel "goto code location" inseriamo 0040100C, leggiamo nella barra inferiore l'offset dell'indirizzo... che è 060C  ora non ci resta altro che usare Hview per effettuare le modifiche in maniera permanente nel prg.  Apriamo Hview, carichiamo il prg. Crackme1,  F4 ------> Decode -----> F5 -----> F3 inseriamo l'offset 060C  ------> F2  e scriviamo  jmp 00000623 ...?????...Azz... direte voi hai sbagliato!!!...l'indirizzo dove effettuare il salto è 00401023.....naaaaaaaa.... quando abbiamo premuto il tasto  F3 in Hview siamo passati dalla modalità Address a quella Offset .. chiaroooooo?... per rendere effettive la variazione di codice  premiamo il tasto F9 ed usciamo col tasto ESC.
Lanciamo il file  eT...Tax!!!!!....Nagstectomia...effettuata....senza dolore...e senza pianto (ma vi immaginate voi se i prg avessero le palle!!!!....brrrrrrrr).....Azzi loro con tutti sti chirurghi della UIC...=;).. vabbè la seconda maniera è quella di inserire tante istruzioni Nop fino a coprire tutti i byte della call in questo caso dall'indirizzo 0040101E  fino all'indirizzo 00401022 (5 byte di morbidezza...=;)) ...hihihihihihih..Nop ..Nop..Nop...Nop...Nop...è il rumore che fa la "supposta virtuale" quando entra.. vabbè lasciamo stare.... lanciamo il prg...eT...Tax!!!!...programma ciulato.
Oooohhhh ...Allora ho perso un sacco di tempo a scrivere spero in maniera semplice e dettagliata l'evirazione del Nag...d'ora in poi per gli altri Crackme sarò un pò più sintetico... anche xchè non voglio essere "cazziato" da Que...per colpa vostra...e poi se mi arrabbio..sò "uccelli per diabetici" ...camice..... mascherina...eT..Tax!!!! dopo pochi secondi farete parte del gruppo musicale Bianchi per Caso..hihihihihihi
Il secondo Crackme..... è dolce...basta un clik...ed è là che aspetta....sembra dire...ciul...ehmmm ..un numero per favore.. solo un numero.. e poi basta...e noi lo accontentiamo...=;)..inseriamo un numero seriale a ca(s)so..333666333 premiamo il tasto Ok...ed ecco che appare una finestra che ha tutta l'aria di prenderci  per il culo....dandoci del luuuuzeeer... a me..  sta' figlia e zoccol' mò ti faccio vedere io...a parte il fatto che non sò che Azz.. significa Luzer....ma da come si è presentata la finestra equivale al classico vaffanculo!!!... e non è educato...qui è necessaria una rieducazione immediata.... faccio una "Anteprima" sul prg e controllo le varie funzioni che utilizza il prg,  CTRL +D per entrare in Sice, dopo aver brekkato su diverse  funzioni, quella esatta è la Getwindowtextlengtha  eT....Tax!!!!.. il Sice mi poppa nella funz... premo il tasto F11 per uscire dalla call della funzione,.controlliamo se ci troviamo nel processo del prg ...Ok..... è qui dobbiamo stare attenti...eheheheh.. la call appena esce mi riporta una valore in Eax = 9  guarda..guarda.. la stessa lunghezza del codice seriale che ho inserito...ma andiamo avanti per vedere cosa succede...steppiamo con F8..fino ad arrivare...

:004011A7     Call 00401247                 <-------chiamata alla Api Getwindowtextlenghta;

:004011AC    mov dword ptr [004020E9], eax    <-- inserisce il valore 9 di eax alla loc. di
                                                  memoria 004020E9;

:004011B1    mov esi, eax                     <----- inserisce il valore 9 di eax in esi;

:004011B3    cmp esi, 0000000C   <------ confronta il valore C con esi, cioè 12 con 9;

:004011B6    jne 004011D6       <------ se non è uguale salta alla call e compare la MsgBoxe
                                         "Wrong Serial";

:004011B8    push 00000030

:004011BA    push 00402091

:004011BF    push 00402097

:004011C4    push dword ptr [00402048]

:004011CA   Call 00401259        <---- chiamata alla  MsgBoxe " Wow!!.. Nice...ecc.ecc."

...................

:004011D6          push 00000030

:004011D8          push 004020ED

:004011DD          push 004020FB

:004011E2          push dword ptr [00402048]

:004011E8          Call 00401259                   <-----chiamata alla MsgBoxe "Wrong Serial"

Allora se avete osservato il disassemblato.. e siete stati attenti alle note di commento... sappiamo già cosa fare....verooooo?...anche qui possiamo.. scegliere quale metodo.. adottare... l'evirazione.......o le supposte....ehm.. nel senso che....possiamo far passare il controllo della lunghezza del codice che deve essere uguale a 12 , vedi la riga 004011b3,  e  quindi andiamo sul sicuro senza fare nessun intervento sul codice.. infatti se inseriamo qualsiasi Serial di lunghezza 12 caratteri comparirà sempre la MsgBoxe "Wow!!...".. l'altra possibilità è di cambiare l'istruzione jne in je alla riga 004011B6 e quindi verrà accettato qualsiasi serial tranne quello giusto... di lunghezza 12 char... Azz... anche questo prg..è ciulato.

Passiamo adesso al terzo CrackMe... eheheheheh siamo quasi alla fine...lanciamo il prg......naaaaaaaaa...anche qui...cerca un seriale da inserire (.ehehehehehe..Tin....è molto buono..è il Papi....della UIC e noi i suoi piccoli pUICcini)..anche qui come per il CrackMe2.. stesso modo di operare...inseriamo il serial... premiamo OK...eT...Tax!!!!  ci compare la pallosa finestra con la scritta "Wrong Code"...vuoi vede' che la tecnica è la stessa del CrackMe2?... cioè il prg.. effettua un check sulla lunghezza dei caratteri del serial... CTRL+D... andiamo in Sice.... Bpx Getwindowtextlengtha .... CTRL+D  per uscire dal Sice... clikkiamo sul prg.. inseriamo un seriale a ca(s)so ...333666333... eT....Tax!!!... Sice ci butta dentro la funzione.... un bel F11  per uscirne fuori...e ci troviamo nell'istruzione successiva alla call. linea 004011B6...controlliamo se ci troviamo nel codice del programma...guardiamo la linea verde in basso del Sice.. Ok... CrackMe3!CODE+01B1...cominciamo a steppare con F10....

                                  |
:004011B1               Call 00401279

:004011B6              mov esi, eax    <----- eax contiene la lunghezza dei caratteri
                                              del serial inserito e lo inserisce in esi; esi=9;

:004011B8              cmp esi, 00000012  <---- confronta esi con il valore 12h
                                                18  nella notazione decimale;

:004011BB              jne 0040121C    <----- se non è uguale salta all'indirizzo 0040121C e
                                              chiama la MsgBoxe "Wrong Code";

hihihihihihihi......lo stesso controllo del precedente Crackme.. cambia solo la lunghezza del seriale ... vuoi vedere che se inserisco la lunghezza giusta...ciulo anche sto Crackme?... esco dal Sice.... inserisco il seriale di lunghezza 18 char... eT..Tax!!! .mbè..... che Azz... succede...compare nuovamente la MsgBoxe "Wrong Code"...quasi a dire...Stronzo!!!...a me ..sta figlia e zoccol'.. e mò ti faccio vedere io.. CTRL+D entro in Sice.. bpx getwindowtextlengtha inserisco il serial di 18 char... clikko su Ok... e poppetee... entriamo in Sice... F11.. per uscire dalla call .. e cominciamo a steppare...quando arriviamo alla riga 004011BD il registro ebx.. punta  alla locazione di memoria 00402098 per  vedere cosa c'è in questo indirizzo  digitiamo il comando d 00402098, qui troviamo il nostro serial inserito...333666333666333666... quindi confronta il primo char del serial con il numero 46 in esa...70 in decimale, lettera "F" in Ascii...se non è uguale salta all'indirizzo 0040121C dove compare la MsgBoxe "Wrong Code"...uhmmmm...quindi il prg.. effettua un secondo check sul seriale...che deve essere uguale ad una sequela di char..predefiniti...e vediamoli quali sono...
 

:004011BD      cmp byte ptr [ebx], 46        <--confronta il 1° char del seriale con 46h,
                                                 70 decimale, lettera "F" ascii;

:004011C0    jne 0040121C                          <-- se non è uguale salta alla MsgBoxe
                                                        "Wrong Code";

:004011C2                 cmp byte ptr [ebx+01], 69     <-- 2° char = 'i'

:004011C6                     jne 0040121C

:004011C8                 cmp byte ptr [ebx+03], 72    <-- 4° char = "r"

:004011CC                     jne 0040121C

:004011CE                 cmp byte ptr [ebx+04], 65    <-- 5° char = "e"

:004011D2                     jne 0040121C

:004011D4                 cmp byte ptr [ebx+06], 57    <-- 7° char = "W"

:004011D8                     jne 0040121C

:004011DA                 cmp byte ptr [ebx+07], 6F    <-- 8° char = "o"

:004011DE                     jne 0040121C

:004011E0                 cmp byte ptr [ebx+08], 72     <-- 9° char = "r"

:004011E4                     jne 0040121C

:004011E6                 cmp byte ptr [ebx+0A], 78     <-- 11° char = " x"

:004011EA                     jne 0040121C

:004011EC                 cmp byte ptr [ebx+0C], 53     <-- 13° char = "S"

:004011F0                     jne 0040121C

:004011F2                 cmp byte ptr [ebx+0D], 75    <-- 14° char = "u"

:004011F6                     jne 0040121C

:004011F8                 cmp byte ptr [ebx+10], 78     <-- 17° char = "x"

:004011FC                 jne 0040121C

:004011FE                 push 00000030

:00401200               push 0040207F

:00401205               push 0040208B

:0040120A               push dword ptr [00402048]

:00401210               Call 00401285             <-- call della MsgBoxe "Right Code!"

:0040121C               push 00000030
                                 |
:0040121E               push 004020C0
                                  |
:00401223               push 004020D1

:00401228               push dword ptr [00402048]

                                  |
:0040122E               Call 00401285                <-- call della MsgBoxe "Wrong Code"

quindi il seriale giusto  di 18 caratteri è Fi_re_Wor_x__Su__x_  al posto del carattere "_" potete inserire qualsiasi carattere. l'importante è rispettare le posizione..dei char. Okkiiiiiiiiii......eddaiiiiii... fatemelo dire per l'ultima...volta...usciamo dal Sice...inseriamo il seriale Fi_re_Wor_x__Su__x_  eT.....Tax!!!!.... programma ciulato.... godooooooooooooooooo!!!!!!!
Guagliò... che sudata...faccio fatica ad alzarmi.. le palle sò diventate di una circonferenza tale che le angurie al confronto sembrano confettini di... non dico la marca...hihihihihihi..... Azz... faccio fatica.. pure a camminare.. uè... vuoi vedè che le supposte.. sò finite nel posto...... sbagliato!!...=:)..Azz..la prox.. volta cambio titolo al tute...meglio proteggersi...con.. Azz... ma vi devo dire proprio tutto!!!!.....;o))))).
 

                                                                                                                 eTTax   =;o)
Note finali 

Non so... se sono stato chiaro...non so se ho detto stronzate...non so..se Que e Tin sono umani....non so perchè nel chan di Crack-it.. quando entro mi ci ritrovo sempre da solo ...(azz.. soffro di vittimismo virtuale..hihihihih), a furia di scrivere sto tute non sò nemmeno chi sono e come mi chiamo... sò solo che grazie alla UIC ..dopo anni.. di dure ricerche...ho trovato...quello che cercavo...(azz..meglio finirla qui)..voglio salutare.. Nerds, ph0bos.., GuZ.., ...AndreaG, Anarkia e tutti gli amici del chan Crack-it...;)

Disclaimer

Siccome HO 4 MOGLI, 24 BAMBINI ed una fidanzata che mi aspetta...ehehehehe la carne è carne ... ed io sono debole,vorrei ricordare,  che il software va comprato e  non rubato, 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 registrare legalmente 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.