TelePort Pro v. 1.37
From UIC
TelePort Pro v. 1.37
Contents |
| Infos | |
|---|---|
| Author: | Johan Padan |
| Email: | |
| Website: | Home page |
| Date: | 24/06/2006 (dd/mm/yyyy) |
| Level: |
|
| Language: | Italian |
| Comments: | |
Introduzione
the most powerful offline browsing, site mirroring, and file-retrieving tool on the Internet.
Credo che le caratteristiche più significative di questo prodotto siano:
Completely download a website, enabling you to “offline browse” the site at much greater speeds than if you were to browse the site online.
Create an exact duplicate, or “mirror” of a website, complete with subdirectory structure and all required files.
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, invece delle solite crakkate, ed è altrettanto facile creare un keygen.
Aprendolo con PeId, verifichiamo immediatamente che non è packed.
Facciamo partire il programma ed inseriamo “your name” e “registration code” nella maschera di registrazione per ottenere la solita risposta “we’re sorry ........”
Apriamo Olly, facciamo partire il prg fino alla maschera di registrazione e settiamo un brkpoint su GetWindowTextA (una call a caso !!), il programma brekka e ci troviamo all’istruzione 0045267 dove appare il nostro nome pigiamo F9 e appare questa volta il seriale inserito.
Dumpiamo a ebp+10 qui c’è l’address 0071f9f1 quindi d 0071f9f1 e d 00a54fc8 per far apparire il nostro seriale.
Per comodità ho inserito come seriale il collaudato numero 47806 che trasformato in hex diventa BABE (il famoso maialino) sicuramente più facile da seguire tra le varie call e nei registri.
All’istruzione 00452689 c’è la prima call pro.0044b47a dove viene verificato l’esistenza del seriale e tramite la call lstrlenA la sua lunghezza . Seguendo il flusso del prg ci troviamo all’istruzione 0042d5c1 a questo punto basta guardare una trentina di righe più in basso per vedere una call di congratulazioni ed una con sorry; siamo al capolinea.Ma ci siamo proposti di capire come funziona il prg non crakkarlo per cui all’istruzione 0042d5cd entriamo nella call pro.00433bff5, all’istruzione 00433c03 entriamo in un’altra call pro.004339f0 alla fine ci troviamo con il nostro seriale trasformato in hex nel registro eax (BABE).
All’istruzione 0042d5f5 pusha il nostro nome e subito dopo a 0042d5fb una call pro.0042dfba che sicuramente genererà il serial corretto lavorando sul nostro nome appena messo nello stack. All’istruzione 0042dfc4 entriamo nella call pro.00433760 e ne esco con il nome in ecx e la relativa lunghezza in eax. All’istruzione 0042dfce c’è un cmp eax, 5 (il nome deve essere maggiore o uguale di 5 char). Si arriva così al cuore del prg:
0042DFD8 |. 56 PUSH ESI (mio serial “BABE”)
0042DFD9 |. BE A4E4FE5D MOV ESI,5DFEE4A4 (mette in esi una costante )
0042DFDE |. 33DB XOR EBX,EBX (azzera il registro)
0042DFE0 |> 85FF /TEST EDI,EDI
0042DFE2 |. 74 09 |JE SHORT PRO.0042DFED
0042DFE4 |. 57 |PUSH EDI
0042DFE5 |. E8 76570000 |CALL PRO.00433760
0042DFEA |. 59 |POP ECX
0042DFEB |. EB 02 |JMP SHORT PRO.0042DFEF
0042DFED |> 33C0 |XOR EAX,EAX
0042DFEF |> 83C0 FC |ADD EAX,-4 (in eax c’è la lunghezza del nome)
0042DFF2 |. 3BD8 |CMP EBX,EAX (ebx funziona da contatore)
0042DFF4 |. 73 0C |JNB SHORT PRO.0042E002
0042DFF6 |. 33343B |XOR ESI,DWORD PTR DS:[EBX+EDI] ( 4 char del nome)
0042DFF9 |. F6C3 40 |TEST BL,40
0042DFFC |. 74 01 |JE SHORT PRO.0042DFFF
0042DFFE |. 43 |INC EBX
0042DFFF |> 43 |INC EBX
0042E000 |.^ EB DE \JMP SHORT PRO.0042DFE0
0042E002 |> 8BC6 MOV EAX,ESI (mette il seriale corretto in eax)
0042E004 |. 5E POP ESI
0042E005 |. 5B POP EBX
0042E006 |. 5F POP EDI
0042E007 \. C3 RETN
Il serial viene generato in funzione della lunghezza del nome e i cicli di xor sono pari alla lunghezza del nome -4. Nella ripetizione dei cicli il nome viene xorato 4 caratteri alla volta shiftando di uno. Per il nome “giovanni” il ciclo funziona in questo modo:
1° ciclo :xor 5DFEE4A4 con 766F6967(voig) in esi abbiamo 2B918DC3
2° ciclo: xor 2B918DC3 con 61766F69 (avoi) in esi abbiamo 4AE7E2AA
3° ciclo : xor 4AE7E2AA con 6E61766F (navo) in esi abbiamo 248694C5
4° ciclo: xor 248694C5 con 6E6E6176 (nnav) in esi abbiamo 4AE8F5B3.
4AE8F5B3 che in decimale diventa: 1256781235 serial corretto.
All’istruzione 0042d600 cmp esi, eax
In esi il nostro serial riconoscibile BABE, ed in eax il serial corretto 4AE8F5B3 in hex.
Essendo la routine una pura sequenza di xor e l’unico controllo eseguito è che il nome sia => di cinque caratteri, se metto come nome 00000000 ottengo come serial valido la costante messa in esi all’istruzione 0042DFD9.
ONLY FOR NEWBIES (LIKE ME)
La preparazione del file. asm per la generazione del serial è abbordabile, richiede la scrittura di una decina di righe di codice assembly e la lettura del tutorial n° 9 di Iczelion per poter adattare il codice già predisposto per una finestra, un edit e un button. Spartano ma funzionante!!
Note Finali
Vorrei dedicare questo lavoro ad un caro amico, Ernesto, nella speranza che si appassioni alla paziente e stimolante arte del reversing. Ed ovviamente...
Un bacio a N. moglie perfetta ed 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.