Zoom Icon

Corso UIC Newbies 03 Guzura

From UIC

Corso UIC Newbies 03 Guzura

Contents


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



Tools


Introduzione

HighGrow (Wdasm32 strings search)


Link e Riferimenti

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


Notizie sul Programma

Erba? Chi può scrivere un programma sull'erba? Una Mucca? Lo ho dato a mio zio che con le tecniche descritte ha tirato su dell'erba medica eccezionale


Essay

Inserito il seriale giusto (questo non sto a spiegarlo perchè ho usato lo stesso metodo del tutorial originale di Que e sarebbe plagio) ho deciso di attivare il GOD MODE a cui era stato accennato nel tutorial di cui sopra (io ci sono riuscito e sono newbie quindi provate anche voi prima di proseguire). Ora va fatta una premessina, dato che sono un pigro cronico dopo aver registrato il programma con il serial opportuno non mi sono preoccupato di andare a vedere tutte le opzioni che il programma offriva e quindi non ho visto che si poteva abilitare una password per impedire agli altri di giocare con le nostre piantine e di conseguenza ho pensato che per abilitare il GOD MODE bisognasse attivare una finestra nascosta e dare una password. Aprite lo string data reference (do per scontato che abbiate letto il tut su questo programma di QUE) scorrendo scorrendo trovate la seguente stringa: "Invalid password entered !!"cliccate due volte e vi ritrovate all'offset :4073f8 guardate due righe giù. Una MessageboxA vi attende! Incominciamo a risalire il codice per vedere chi chiama chi; troviamo che il seguente codice che riguarda la messageboxa è; referenziato dal seguente salto non condizionato:

  • Jump Unconditional :4073E6(U)

subito a vedere questo salto dove sta e magia delle magie si trova ( che CULO trovo la routine che controlla se la password che ho immesso sia corretta (ed è una routine del tutto identica a quella che controlla che il seriale per la registrazione sia giusto) ma ora mi viene un dubbio; dove cazzo va a pescare una password se non ho il modo di immetterla (ricordate che non ho guardato le opzioni del programma e quindi non avevo idea di questa possibilità…sono pigro) continuo a risalire per vedere dove piglia sta password risalgo fino a :004073A4 che è referenziato da un salto condizionato che arriva da :40738F e su ancora fino a :0047380 che arriva da una CALL a 40075B3 salgo fino alla CALL e trovo che devo andare a 4075A4 che mi manda a :407536 poi a :407521 per arrivare a finire a :407500 dove non trovo più niente perchè WDasm32 non riesce a referenziare una chiamata del tipo "CALL esi " infatti dopo la sfilza di int3 trovo una ret (non mi sono preoccupato dei salti intermedi perchè; non mi inspiravano INTUIZIONE E UN PO' DI CULO) ma sono arrivato a un punto morto. Non proprio avete fatto caso alla routine che fa il check sulla password; ci dice esattamente in quale locazione sta la password; andiamo a vedere (a :004073C3 se non ricordate) e vediamo che c'è un bel mov edx,00426590 dove edx è confrontato con eax nella routine che verifica la password ma questo dovreste già saperlo ;))) Ora si fa un bel Find text con la stringa 00426590 per vedere cosa salta fuori (la curiosita talvolta aiuta); infatti ogni volta che WDasm32 trova la stringa lì vicino ci stanno anche le seguenti "Possible string data ref" :1 volta c'è Password, 2 volte c'è IAMGOD (molto interessante, scorgete il codice sotto e trovate sotto ognuna delle stringhe IAMGOD un check che confronta la stringa stessa con quella che inserite: quindi DUE check) e 1 volta il seriale poi altre cose. Anche il seriale mmmmmhhhhhh

Colpo di CULO e un pizzico di INTUIZIONE, e sono a guardare i registri di windows dove credo ci sia il seriale.

Piglio il mio register editor (uso quello della Norton) e scopro che c'è nè uno per il seriale e uno per il Nick che ho usato per registrare il programma. Ideona e colpo di culo, inserisco io un nuovo registro chiamato Password (come era apparso dalla ricerca della stringa 00426590) con un valore a caso e vado a vedere Amelia e Cordelia (le mie piantine).

Riavvio il programma e BAM schermata che mi chiede la password (che coglione mi sono escluso da solo MA ORA TUTTO E CHIARO) chiudo tutto vado alla routine che verifica la password (quella di prima) trovo l'offset esadecimale dell'istruzione (se non sapete come fare leggete il tutorial n° 2 per newbies di Tin_Man: eccezionale e chiaro) apro Hiew e vado a noppare i JNE ( che stanno dopo i confronti tra cl e byte ptr…) così la password non è comunque più un problema Il codice modificato è questo:


004073C8 mov cl, byte ptr [eax]
004073CA cmp cl, byte ptr [edx]
004073CC nop (opcode 90h lo so lo sapete già; ma quando io non lo sapevo nessuno me lo diceva)
004073CD nop
004073CE or cl,cl
004073D0 nop
004073D1 nop
004073D2 mov cl, byte ptr [eax+01]
004073D5 cmp cl, byte ptr [edx+01]
004073D8 nop
004073D9 nop
004073DA add eax,00000002

... Tanto e sempre la stessa quindi non la spiego lo ha fatto meglio [Paradox Evil] Apro il programma ed entro AH IL GOD MODE beh dovreste averlo capito da soli dato che la stringa IAMGOD si trovava vicino ai check per la password cosa dovrete inserire secondo voi come Password? Chiudete, riaprite et voilà. Ultima Nota vi ricordate i DUE CHEK per controllare se la stringa IAMGOD era uguale all password? Dato che la routine che fa il controllo è uguale a quella del seriale e della password potreste pensare di far saltare anche quelle e attivare il god mode con qualsiasi password Con questo ho finito ciao a tutti da GuZura


Note Finali

Conclusioni se avessi guardato meglio il programma e mi fossi accorto della possibilità di settare la password mi sarei risparmiato la meta del lavoroma l'esperienza insegna

Una riga per salutare tutti coloro che rispondono alle mie richieste di aiuto sulla ML


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.