Zoom Icon

Corso UIC Newbies 05 Cousin It

From UIC

Corso UIC Newbies 05 Cousin It

Contents


Infos
Author: Cousin It
Email: Email
Website: Home page
Date: 14/08/2000 (dd/mm/yyyy)
Level: Some skills are required
Language: Italian Image:Flag_Italian.gif
Comments:



Tools


Link e Riferimenti

Questo è il Corso UIC Newbies n°05 disponibile alla pagina Corsi UIC Newbies


Introduzione

Bè... non cè niente da aggiungere a quello che c'era già scritto!!! vediamo se sotto un'altro punto di vista si può arrivare ad una seconda soluzioone


Notizie sul Programma

È un semplice crackme con la richiesta di un nome e un seriale. Il seriale è generato da un semplice algoritmo che per il momento non ci interessa, se volete il seriale


Essay

Bene Un complimeto ad AndreaGeddon, per il suo tutorial del serial Fishing di questo programma (Complimenti molto esplicito e comprensibile)... ve lo consiglio la lettura, si possono capire le funzioni Xor, e in più come il seriale viene nascosto abbastanza bene per gli occhi di un NewBies.Per cominciare lanciamo subito WinDasm... hummm, bene... il prg si disassebla istantaneamente ed eccoci dentro, apriamo le String Reference ottimo, la cosa che ci consola maggiormente è che non è scritto in Visual Basic. Ora molti di voi penseranno di andare nel punto in cui appare il messaggio di errore... ! Esatto bene bravi complimenti, ok "Serial Erraro. Lavora Ancora".ed ora faccioamo un "Back Trace", Forse molti di voi non sanno l'esatto significato di questa orrenda parola che tradotto in Italiano significa "Tracciare all'indietro", quindi con i cursori della tastiera torniamo indientro leggermente nel programma, la prima cosa che ci salta in occhio e subito "Leim :-)", questo termine è utilizzato molto spesso da xOANNINO, ma vedo che ha preso molto piede, il suo significato e di un gradino più sottostante del Lamer. bene, ma non preoccupatevi è soltanto la Caption della message box il qualce ci informava di lavorare ancora.Retrocedendo ancora arriviamo a questo punto: 40185D jne 401893 (Salto condizionato se il serial Risulta esatto) bè non esultate non è ancora finito eseguimao il Jmp condizionale ed arriviamo in questo punto

401893 mov esi, dword prt [ebp-64]
401896 cmp bl,DD
401899 jne 4018CE // Un bel Jmp condizonato, potrebbe essere quello
// giusto?? bè Vediamo prima sotto cosa succede!!)
40189B push 00000040
40189D push 004030A0 // Mette in memoria la stringa "Leim Ignorante <:-)" e
// tutto ciò non ci piace vero?
4018A2 push 0040307C // Bè sapete cosa mette in memoria - (è velo è velo è
// proprio un Cazz.... hem Gatto)
4018A7 mov ecx,esi // Porta il contenuto di esi in ecx, che viene salvato
// in ecx
4018A9 call 401B40 // Chiamata ad errore

Bene quindi non essendoci altri Jmp nei dintorni precedente era quello esatto andiamo dentro dai su forza che ormai ci siamo, 3...2...1... Jne4018CE

eps, si intavedono i messaggi di complimenti che bello ce l'abbiamo fatto!!! spetta!! azz... non l'avevo notato prima quello che cosè??, ragazzi voi le vedete quelle due funzioni, ma vuoi vedere che non è finita???

4018CE cmp bl,FF // Confronta bl con FF perché mai dovrebbe farlo?
4018D1 je 401908 // Esegue il salto se bl è uguale ad FF... ma BL è uguale
// ad FF e noi non vogliamo che salti vero?

Bene ecco fatto ce l'abbiamo fatta, ci siamo registrati URRA!!!, Allora dobbiamo modificare questi Jmp quindi apriamoci HexWorkshop o un qualsiasi edito esadecimale

40185D jne 401893 // con un JE oppure con un salto incondizionale,
// sapete quale JMP
401899 jne 4018CE // con un JE oppure con un salto incondizionale
// il JMP
4018D1 je 401908 // con un JNE oppure con cosa???, chi ha detto con
// un JMP: bocciato! si sotituisce con due NOP

Bè spero che lo sappiate fare... almeno !!! cmq a me non piace e a voi??? avete visto quanti Jmp siamo andati a modificare azz... Come accennato da AndreaGeddon nel Tutorial servirebbe più di un solo Jmp per potersi registrare, qundi ne abbiamo usati solo 3 che bello.

Ricordatevi una cosa, il Reversing va considerato come un'arte, quindi se possiamo tirare via le NagScreen come se nulla fosse allora nessuno ci potrebbe impedire di levare completamente la generazione del Serial... nvece di Bypassare solamente il Ceck del serial. Ora è il momento di Utilizzare SoftICE per gli amici Sice! Inseriamo un nome Casuale, e un codice casuale e poi CTRL+D ecco che appare la finestra del sice, attiviamoil BreackPoint su bpx GetdlgItemTextA invio e poi F5, clicckiamo su Ceck ed ecco che il Sice Poppa, premiamo Nuavamente F5, e poi F12 per due volte consecutive (leggete il Tutorial di questo programma di AndreaGeddon per conoscerne il motivo di questi F5 F12 ecc... Hehehe Ti faccio anche pubblicità)

4017D5 xor esi,esi // Azzera il registro esi
4017D7 xor edi,edi // Azzera ovviamente edi
4017D9 mov al,byte ptr [ebp+esi-88] // mette in al il primo carattere del
// nome... qui comincia la generazione
// del codice, a dir la verità dai due
// Xor precedenti
4017e0 cmp al,00 //Confronta che al non sia zero, in al c'era il primo
// carattere del nome
4017e2 je 4018a4 // Se al era zero significa che il nome per il calcolo
// del codice è finito e quindi salta. Allora saltiamo
// direttamente: andiamo a sostituire questa jmp e
// mettiamo la nostra destinazione, ovvero dove il serial
// è esatto quindi posizionatevi sul jmp e scrivete
// " a eip " dopodichè scrivete: jmp 401857 e premete 2
// volte consecutive il tasto invio. Andate a leggere
// come viene modificato questo jmp e lo riscriverete poi
// sull'hex editor.... Bene quindi eccoci registrati....
// con semplicemente un Jmp.

WOW I LOVE REVERSING ENGINEERING


Note Finali

Questo è semplicemente un Tutorial, ricordate quindi che nella realtà quando vi registrerete il programma creerà o scriverà il codice da qualche parte in un registro nascosto, e ogni volta che verrà avviato ci sarà un controllo, per cui un semplice jmp non basterebbe veramente, alcune volte ci sono anche 4-5 controlli, e molto spesso nei programmi complicati vi portano dentro a delle DLL... Quindi molti Shareware li potete modificare con un solo Jmp o pochi Jmp... Ma altri programmi invece no!!!


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.