Saint Paint Studio
From UIC
Saint Paint Studio
Contents |
| Infos | |
|---|---|
| Author: | Johan Padan |
| Email: | |
| Website: | Home page |
| Date: | 06/01/2006 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
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 momorizza le animazioni ed i dati più importanti). Inoltre offre il supporto per il montaggio dei file in formato AVI.
Tools & Files
URL o FTP del programma
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 massimo posso inserire 29 char, ed atterriamo 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 seriale 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 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 fittizio di 25 affinchè elaborandoli ne esca uno 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 e impareggiabile amante :)
Disclaimer
I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.
Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevoli e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.






