Saint Paint Studio

Data

by Johan_Padan

 

06/01/2006

UIC's Home Page

Published by Quequero

 

Johan grazie del tutorial, guai a te se me lo mandi nuovamente in .doc pero' ;p. E complimenti per l'approccio, veramente originale, non avevo pensato ad usare Excel ;p

 

....

 

....

Difficoltà

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

 

 

Introduzione

Saint Paint è un editor grafico che unisce le più comuni funzioni di fotoritocco (eliminazione occhi rossi, modifica livelli di colore e saturazione, ecc.) con una semplicità d'uso davvero notevole. Supporta i formati BMP, JPG, GIF, ICO, CUR, PNG, PCX, TIF, TGA, WBMP e SPS (formato proprietario che memorizza le animazioni e i dati più importanti). Inoltre offre il supporto per il montaggio dei file in formato AVI.

Tools usati

Olly Dbg

PeId

URL o FTP del programma

saintpaint.com

Essay

Ho recuperato il programma su una rivista per computer e direi che è veramente un classico, un “case study” per noi principianti in quanto ti permette di decifrare facilmente la routine di generazione del seriale.

Aprendolo con PeId, verifichiamo immediatamente che non è packed, Visual C++ 6.0.

Il programma è in versione trial 60 giorni.

Facciamo partire il programma ed inserendo un serial qualsiasi otteniamo la canonica risposta “you have entered an incorrect serial number,please try again.”

Facciamo partire Olly e ricercando la stringa “you have entered...” individuiamo immediatamente la sezione del programma che gestisce a poche righe di differenza il messaggio di incorrect serial e quello di “serial number accepted”. A questo punto la prima soluzione è ovvia ma poco stimolante è sufficiente un nop all’istruzione:

0052757F   .  74 53         JE SHORT SAINTPAI.005275D4

ed il programma risulta registrato.

E’ utile concentrarsi sulla routine di generazione del seriale per capire come viene costruito.

Partiamo entrando nella prima call prima del fatidico if..then ..else

Digitiamo un serial qualunque al max posso inserire 29 char, ed atteriamo a questa call

non esegue niente di particolare per cui proseguiamo fino ad arrivare a:

entrando nella call sopra evidenziata ci troviamo nella sezione dedicata al controllo del serial.

Vengono presi i primi 3 char del serial e messi in eax all’istruzione 004959a4.Il primo char subisce le modifiche sotto indicate ed alla fine viene messo in dl il nuovo valore modificato.

All’indirizzo 61d648 è presente una stringa alfanumerica alla quale il programma attinge per modificare il nostro primo char.

il secondo char subisce le sotto indicate modifiche:

il terzo char subisce le sotto indicate modifiche:

infine genera un quarto char sfruttando il valore residuale presente in eax:

Quindi per ogni 3 char immessi il programma genera 4 char. Alla fine del ciclo vengono confrontati con una stringa presente all’istruzione 004ad8c1.

Siccome la stringa che viene confrontata con il nostro serial è di 33 char, devo inserire un serial di 25 char affinchè elaborandoli ne esca una di 33.(infatti il programma ogni 3 char elaborati ne aggiunge uno).

A questo punto tramite la calcolatrice di windows devo ricostruire i valori esadecimali da immettere in eax tali che realizzino una stringa uguale a quella presente all’istruzione 004ad8c1.

Preciso come vengono creati i primi tre char corretti “kfw”:

0061d648+1a =61d662 dove si trova il char “a” (che appartiene alla stringa da confrontare)

0061d648+36=61d67e dove si trova il char “2”

0061d648+19=61d661 dove si trova il char “Z”

0061d648+37 = 61d67f dove si trova il char “3”

004959b3 SAR ECX,12 deve diventare SAL ECX,12 (sto costruendo a ritroso!)

per cui ‘1A SAL,12= 680000

004959c2 SAR ECX, C deve diventare SAL ECX,C

per cui 36 SAL, C = 36000

004959D4 SAR ECX, 6 deve diventare SAL ECX,6

per cui 19 SAL, 6 = 640

004959ec deve esserci 37

la sommatoria dei quattro valori precedenti (680000+36000+640+37) genera il valore esadecimale 6B6677 che corrisponde ai char “ kfw “.

Il serial corretto è: kfwpigotipoidsljeyyerywed.

Note finali

Un bacio a N. moglie perfetta ed impareggiabile amante!!!!!

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 che ogni sviluppatore ha dovuto portare avanti per fornire ai rispettivi consumatori i migliori prodotti possibili.

Reversiamo al solo scopo informativo e per migliorare la nostra conoscenza del linguaggio Assembly.