Animagic GIF 1.02


30/07/2000

By "Pincopall"

 
 

UIC's Home Page

Published by Quequero



Bravo Pincopall, la protezione non era troppo difficile, ma il tute � adatto ai newbies, mi raccomando per�...Cimentatevi sempre con qualcosa che pensate di NON saper crackare!
 
UIC's form
E-mail: [email protected]
Canale IRC: #crack-it
UIC's form

Difficolt�

(X)NewBies ( )Intermedio ( )Avanzato ( )Master

 

Prima eliminiamo la protezione a tempo con scadenza a trenta giorni e poi ci facciamo anche registrare dal programma con un nome ed un seriale qualunque.


ANIMAGIC GIF 1.02
Written by Pincopall

Introduzione

Questa � una versione trial, come ho gi� detto sopra il cui utilizzo scade dopo trenta giorni.
Proviamo dunque a farne diventare eterno l'utilizzo!!

Tools usati

SoftIce
WDasm 8.93
HexWorkShop <== l'editor esadecimale, potete usare il vostro preferito.

URL o FTP del programma

http://www.rtlsoft.com/animagic

Notizie sul programma 

Il programma in questione permette la creazione di GIF animate (e sta cosa mi sa che la si capiva anche un p� dal titolo no? ;-) da usare poi come meglio si crede (pagine html, sfondo per Windoze, ecc...)

Essay

Ok guys let's go!!

Dunque lanciamo il programma e subito salta fuori una Message Box che ci informa che questa � una versione trial, che la stiamo usando da un tot di giorni sui 30 previsti, e che ci mprega di registrare il programma anche on-line. Dunque questo � il nostro primo obiettivo: l'eliminzaione della protezione a tempo.

Dunque apriamo WDasm (lo so che � meglio IDA , ma ora non ce l'ho sottomano) e cerchiamo con "Find Text" il valore esadecimale 0000001E (corrispondente a 30 in numeri decimali) e segnamoci gli indirizzi nei quali 0000001E viene confrontato con qualcosa. Ci saranno tre di questi compare: uno a 0041D3E2, uno a 0041D403 ed uno a 0040F386:

:0041D3C1 53              push ebx
:0041D3C2 E886010000     call 0041D54D
:0041D3C7 59             pop ecx
:0041D3C8 A28D334700     mov byte ptr [0047338D], al
:0041D3CD 53             push ebx
:0041D3CE E884020000     call 0041D657 <---- determina il valore di eax
:0041D3D3 59             pop ecx
:0041D3D4 A394334700     mov dword ptr [00473394], eax <-- sposta il contenuto di eax
:0041D3D9 803D8D33470000 cmp byte ptr [0047338D], 00
:0041D3E0 7509           jne 0041D3EB
:0041D3E2 833D943347001E cmp dword ptr [00473394], 0000001E <-- confronta il valore con 30
:0041D3E9 7E04           jle 0041D3EF <-- salta se minore o uguale

Dunque, in 0041D3E2 confronta 0000001E con il numero dei giorni da cui noi stiamo usando il programma, voi direte "Oh Pinco e come fai a sapere che in 00473394 ci st� propprio il numero dei giorni ?!?" e io vi risponder�: "Basta aprire SoftIce e guardare cosa � contenuto in 00473394, e cos� vi accorgerete che l� dentro c'� proprio quello", inoltre come vedete se il numero dei giorni � minore di 30 salta la funzione subito sotto che ci porter� a :

:0041D3EF BA01000000              mov edx, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041D3ED(U)
|
:0041D3F4 88158F334700    mov byte ptr [0047338F], dl
:0041D3FA 803D8D33470000  cmp byte ptr [0047338D], 00
:0041D401 7509            jne 0041D40C
:0041D403 833D943347001E  cmp dword ptr [00473394], 0000001E <--confronta il
:0041D40A 7F04            jg 0041D410                numero di giorni con 30 

 

Come vedete se il velore dei giorni sar� maggiore di trenta c'� un bel jg (lump if greater) che ci porter� al messaggio di errore. Dunque, ci sono vari modi per eliminare questa protezione a tempo, io ho scelto quello che per me � il pi� elegante, ovvero andare a modificare la call all'indirizzo 0041D3CE che determina il valore di eax, ovvero dei giorni di uso, infatti vedete che il contenuto di 00473394 non � nient'altro che il vontenuto di eax per merito di quel mov a 0041D3D4. Andiamola dunque ad esaminare:

Jump at Address : 0041D3ED(U)
|
|
:0041D712 85FF           test edi, edi
:0041D714 7507           jne 0041D71D    <---- salta se edi � diverso da edi
:0041D716 B80F270000     mov eax, 0000270F   <---- da un valore ad eax
:0041D71B EB2E           jmp 0041D74B        <---- salta alla fine della call

questa � dunque la parte che ci interessa, infatti il salto incondizionato ci porta direttamente alla conclusione della call, dunque questa � la parte che ci interessa essendo l'ultima in cui viene toccato eax, a questa parte ci si arriva per forza poich� qui ci portano, come potete vedere, due salti incondizionati, per arrivare per� a quel mov e di seguito a quel jmpo, bisogna togliere di mezzo quel jne 0041D71D, e per farlo, che cosa meglio di un bel nop? andiamo dunque a cambiare con l'editor esadecimale quel 7505 con un bel 9090. Ora dunque dobbiamo mettere in eax un valore che riamrr� fisso e che quindi ci far� diventare eterna la versione trial, dunque andiamo di nuovo nel nostro editor esadecimale e cambiamo quel B80F270000 con un bel B800000000 (se volete che il programma pensi che lo stiate usando da zero giorni, ovvero per la prima volta) oppure con un bel B801000000 se volete che pensi di essere usato da un giorno e cos� via, ovviamente tale numero deve essere minore o uguale a 0000001E. Ok, il primo passo l'abbiamo fatto, abbiamo tolto la protrezione a tempo e il programma, se abbiamo messo zero giorni di utilizzo, ci dar� anche il ben arrivati, altrimenti ci dir� che lo stiamo usando da un tot di giorni (che rimarr� fisso) sui trenta previsti.

Noi per� vogliamo di pi�!! Vogliamo anche la registrazione vero?

Bene, una volta entrati nel programma andiamo su Help e clikkiamo su "Enter name and password", dunque inseriamo il nostro nome: "Pincopall", la nostra compagnia: "Pincoz s.p.a." ed il nostro serial "11223344", clikkiamo ed ovviamente compare la beggar off che ci dice che la password non � valida e che per questo la registrazione non pu� avvenire. Bene, ora riapriamo WDasm e cerchiamo sia il messaggio di errore della beggar off che il messaggio che ci apparirebbe se il codice da noi immesso fosse giusto, ed infatti in "String Data Reference" dal men� Refs troviamo un bel " Thank you for registering " nonch� un bel " Registration failed: invalid password ". Okkei dunque clikkiamo due volte su quest'ultimo ovvero sul messaggio della beggar off, e vediamo questo:

Jump at Address : 004202B0(C) <-- Dunque � questo il salto che ci interessa
                                  andare a trovare (speriamo sia in casa!;-)
:00420322 8B06 mov eax, dword ptr [esi]
:00420324 6A00 push 00000000
:00420326 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"Registration failed: Invalid Password"
|
:00420328 68B3944600   push 004694B3
:0042032D FF700C       push [eax+0C]
:00420330 FF7068       push [eax+68]
:00420333 E8F2330200   call 0044372A
:00420338 83C414       add esp, 00000014

.........

Okkei allora eccoci a tale saltino:

:0042029D 56             push esi
:0042029E E8AAD2FFFF     call 0041D54D
:004202A3 59             pop ecx
:004202A4 A28D334700 mov byte ptr [0047338D], al <-- muove il contenuto di al
:004202A9 803D8D33470000 cmp byte ptr [0047338D], 00 <-- e lo confronta con 0
:004202B0 7470           je 00420322                 <--- salta se al=00
:004202B2 C6059033470000 mov byte ptr [00473390], 00
:004202B9 681C304700     push 0047301C
:004202BE 687D314700     push 0047317D

Allora, come vedete si tratta di un jump if equal che se salta, quindi se il primo byte di 004733BD, che poi non � altro che il contenuto di al, � uguale a zero, ci manda al messaggio di errore. Dunque, qui potremmo fare in due modi, o noppando quel bel saltuzzo l� sostituendo quel 7470 con un bel 9090, oppure potremmo sostituiree il valore di al che viene determinato da quella call a 0042029E con un valore fisso ovviamente diverso da zero, il ragionamento che va fatto qui � uguale a quello di prima che riguardava la protezione a tempo. Se infatti tale salto non viene eseguito ecco che arriviamo di filata al messaggio di ringraziamento.

Ok, dunque ora siamo anche registrati, se per� avviamo il proggy, vediamo che nonostante ora ci prenda qualsiasi seriale e ci consideri registrati, ci viene sempre mostrata la Message Box che ci dice da quanti giorni stiamo usufruendo gratuitamente del programma. E a noi questa Message Box da fastidio vero?

Bene: ( per quelli che hanno risposto "no") : tenetevelo cos�.

Bene: ( per quelli che hanno risposto "si") : continuate a seguire 'sto tute. =)

Allora, andiamo a cercare la call che ci fa apparire tale Message Box all'inizio del programma, il codice che dovrei riportare qui lo ho gi� riportato sopra, la call in questione � infatti la chiamata a 0041\D54D che si trova all'indirizzo 0041D3C2, per non farapparire pi� tale message box ci basta solo noppare la chiamata, ci apparir� ora, una volta noppata la call, all'inizio del programma una nuovaMessage Box che ci informer� che questo programma � registrato a nome di "Pincopall" della "Pincoz s.p.a." e sotto vedremo che ci chieder� : " Volete che io non appaia pi� all'inizio del programma ? ", bene qui potete ovviamente fare quello che volete, per� secondo me � bello vedere che un programma si ritiene registrato e si vanta di esserlo ;-)

Bene, con questo abbiamo finito, ora abbiamo eliminato la protezione a tempo, ci siamo registrati ed abbiamo fatto si che il programma ci dicesse di essere registrato.

Alla prossima, ciauzzzzzzz

Pincopall

Note finali

Spero di essere stato chiaro, comunque se ci sono dei problemi la mia e-mail la conoscete. Per concludere voglio salutare tutti i componenti della UIC e della ML nonch� del canale #crack-it. Ringrazio in particolar modo _ph0b0s_ (che in questi giorni mi sopporta sul canale hihihi), e AndreaGeddon (che d� una mano a ph0b0s ;-)).

Un saluto mui spieciale va anke a Bebos, Nio (Forza ragazzi che il progetto andr� in porto !! ) e Desideria.

Disclaimer

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.
Capitoooooooo????? Bh� credo di si ;)))) 

UIC's page of reverse engineering, scegli dove andare:
Home   Anonimato   Assembly    ContactMe   CrackMe   Forum   Iscrizione
Lezioni    Links   Linux   NewBies   News   Playstation
Search   Tools   Tutorial   UIC Faq   XXX Page
UIC