Patch per Arles 2.1 in due "vie"


Data

by "DaRk PlaGuE"

 

8/10/1999

UIC's Home Page

Published by Quequero


Orpo! Siamo quasi nel duemila.

Tutorial molto semplice ma che può essere utile ai Newbies....Dark Plague è l'unico che va a cancellare delle stringhe nell'html che io ho segnalato nel sorgente stesso del form, raga, imparate, imparate :)...E bravo dark :)

Chissa se nel 2000 mi impazzirà il computer.
UIC's form
E-mail: [email protected]
IC's form

Difficoltà

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

 

In questo tutorial vi spiegherò come apportare due possibili modifiche ad Arles per far si che sia utilizzabile anche dopo i trenta giorni di prova o per far si che accetti qualsiasi codice di registrazione da noi inserito.


Patch per Arles 2.1 in due "vie"
Written by DaRk PlaGuE

Introduzione


Si tratta di una patch che serve ai meno esperti per prenere confidenza con i jump vari. Ricordate che non sempre sarà tutto così semplice.

Tools usati

Il buon vecchio WDasm 8.9 (che non mi tradisce mai)
Un editor esadecimale (io uso ultraedit ma ce ne sono molti altri)

URL o FTP del programma

Arles lo trovate al seguente indirizzo:
http://tucows.tin.it/files2/arles.zip
Se il file non si trovasse più lì, scrivetemi e ve lo manderò via E-mail

Notizie sul programma 

Questo programma serve a creare automaticamente un copia rimpicciolita di una immagine o di una serie di immagini. E' molto utile per la costruzione di siti con gallerie. Presenta la possibilità di essere registrato tramite Name/Registration code.

Essay

Ciao gente, eccoci al tutorial vero e proprio. Se siete abbastanza esperti vi consiglio di lasciar perdere la mia guida e di provare da soli se invece siete nuovi del campo andate pure avanti.
Dunque, il programma una volta installato ci presenta una schermata molto simile a quella del mitico Winzip con quattro tasti:
"Enter registration code", "Quit", "I Agree" e "Ordering info". Nella parte bassa di questo Nag-Screen c'è infine il conteggio dei giorni che abbiamo usato. Una volta superati i trenta di prova comparirà anche un messaggio in rosso che dice:"Your 30 day evaluation has expired! You must register to keep using Arles." Questo dovrebbe servire penso a farci sentire solo dei vermi per non aver registrato il prodotto, visto che nel mio caso cliccando su "I Agree" il programma si presenta lo stesso. Comunque per sproteggere questo programma opereremo in due vie; O troveremo il salto che ci fa apparire il messaggio dopo i trenta giorni e lo cambieremo in modo che si possa utilizzare anche per quattro secoli senza avere messaggi o cambieremo il codice del programma in modo che si posa registrare con qualsiasi nome/codice. (Visto che è un tutorial per newbies non spiegherò come trovare il codice giusto in memoria anche perchè non l'ho fatto!!! :-)))))))))).
Cominciamo con il primo metodo:
Dopo aver disassemblato il programma con il WDasm cominceremo a cercare nelle String Dara References il messaggio di errore. Purtroppo il messaggio non c'è e quindi proviamo a vedere se c'è una stringa che dice: "Days using Arles". WOW!! questa si che c'è. Doppio clic sulla stringa e ci ritroviamo in questa parte del programma.
...........................
:00497DDF    mov edx, 004973DC 
:00497DE4    call 00403db4
:00497DE9    mov edx, dword ptr [ebp-18]
:00497DEC    mov eax, dword ptr [ebp-04]
:00497DEF    mov eax, dword ptr [ebp+000002E8]
:00497DF5    call 00431EA4
:00497DFA    cmp dword ptr, [ebp-1] 0000001E      Confronta qualcosa con 1E che sarebbe 30 !!!!
:00497DFE    jle 00497E22                                        Salta se questo "qualcosa" è minore o uguale a 30 !!
:00497E00    mov eax,dword pte [ebp-04]
................................
Non c'è nemmeno bisogno di dire che il valore confrontato sono i giorni che abbiamo usato Arles. Basterà quindi cambiare il salto jle (Jump if Less or Equal = Salta se minore o uguale) in un salto incondizionato jmp. Ovvero scrivere al byte 971FE (questo è l'offset del salto) "eb" al posto di "7e". Così facendo il programma non farà comparire mai il messaggio, perchè al posto di fargli eseguire una operazione (in questo caso "non visualizzare il messaggio") solo se i giorni che abbiamo usato il prog. sono minori o uguali a 30, eseguirà la nostra operazione sempre. Semplice no?

Secondo metodo:
Avviate il programma e cliccate su "Enter Registration Code". Cliccate su ok senza inserire dati e segnatevi il messaggio di errore che è "Invalid registration code". Ora cercate questo messaggio nelle string data references e quando lo trovate cliccateci sopra due volte. Arriverete in questo punto:

..............................................
Jump at address:
|:0048E1F1            A questo indirizzo c'è un salto che ci porta qui
|
:0048E2C3    push 00000000
:0048E2C5    mov cx, word ptr [0048E384]
:0048E2CC    mov dl, 01

*Possible StringData Ref from Code Obj ->"Invalid registration code"
:0048E2C    mov eax, 0048E390   
:0048E2C    call 0045376C
..............................................

Noi approdiamo all'indirizzo 0048E2C e se guardiamo nel disassemblato un po' più in su vediamo subito che il programma richiama questa parte di codice con un salto dall'indirizzo 0048E1F1. Infatti se andiamo a quell'indirizzo troviamo:

...................................................
:0048E1EA    call 00403B40
:0048E1EF    test al, al
:0048E1F1    je 0048E2C3                      Da qui ci manda al messaggio di errore
...................................................

Ora, se cambiate il "je" in "jne" il programma vi registrerà con qualsiasi codice. Ma non appena riavvierete  il programma questi vi farà ricomparire il Nag-screen perchè l'infame controlla il codice anche all'avvio. Quindi non cambiate il salto perchè, invece, cambieremo dei parametri nella call immediatamente precedente. Entrando nella call ci si trova in questo punto:

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

:0048DF97    call 0047D8EC
:0048DF9C    cmp dword ptr [0048B94C], 00000000       Controlla se abbiamo inserito il nome o il serial
:0048DFA3    je 0048DFD5                                               Se non lo abbiamo fatto salta a (1)
.........................................
:0048DFCE    call 00403E78
:0048DFD3    je 0048DFD9                                        Il programma salta a (2)       

Jump at address:
|:0048DFA3
|
:0048DFD5    xor eax, eax                                          (1)
:0048DFD7    jmp 0048DFDB                                     Il programma salta  il codice (2) e ritorna dopo un po' a 0048E1EF
 
Jump at address:
|:0048DFD3
|
:0048DFD9    mov al, 01                                                     (2) IMPORTANTE !!!!
...........................................

Vi ricordare quale era il comando precedente al Je che ci portava al messaggio di errore? Era un test al, al. La cosa che mi ha fatto insospettire è stata che nella call precedente ad un "test al, al" l'unica volta che compare questo (al) è all'indirizzo 0048DFD9 e quindi ho provato  modificare il programma in modo che passasse sempre per quel punto cambiando il "je" a 0048DFD3 in un jmp, ovvero cambiando all'offset 8D3D3 il byte da "74" a "eb". Ora lanciate il programma con questa modifica e... magia... non compare più il Nag-Screen e potete registrare il programma con il nome che volete dal menu "help" e poi "Enter Registration Code". Questa volta inoltre le modifiche rimarranno registrate in memoria.

                                                                                                                                  DaRk PlaGuE

Note finali

Non pensavo che fosse così complicato scrivere un tutorial comprensibile (spero) a tutti.
Come ho già ripetuto non sempre le protezioni saranno così semplici da eludere quindi non fateci l'abitudine. Ringrazio in ordine alfabetico:
ALoR: perchè ho cominciato a crackare grazie ai suoi tutorial.
Quequero: perchè ospita questa pagina e perchè, come Ringzer0, mi a fornito moltissime info con i tutorials che ha nel suo sito.
E tutti i cracker della rete.

Disclaimer

Questo tutorial non vuole diffondere il fenomeno della pirateria informatica. Il softwere deve essere registrato legalmente e questa guida è stata creata solo con lo scopo di insegnare il linguagio assembly. Io non mi assumo nessuna responsabilità per eventuali danni che causerete al vostro computer usando questo tutorial. Usate questo tutorial solo per scopi legali. Noi reversiamo al solo scopo informativo e di miglioramento del linguaggio Assembly.

 

 

UIC's page of reverse engineering, scegli dove andare:

Home   Anonimato   Assembly    ContactMe  CrackMe   Links   
NewBies   News   Forum   Lezioni  
Tools   Tutorial 

UIC