Xhack

Un forum dedicato all'hacking
 
IndiceIndice  PortalePortale  CalendarioCalendario  FAQFAQ  CercaCerca  RegistrareRegistrare  Lista utentiLista utenti  GruppiGruppi  Connessione  

Condividere | 
 

 un po'di reverse su windows

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso 
AutoreMessaggio
darkjoker
Admin
Admin


Numero di messaggi: 813
Data d'iscrizione: 30.07.07

MessaggioOggetto: un po'di reverse su windows   Lun Ago 27, 2007 2:14 pm

premetto dicendo che potreste non vedere le immagini che ho inserito, in questo caso ho inserito sotto il link in modo da poterle vedere ugualmente

Prima di cominciare con il reverse vero e proprio volevo solo fare una piccola introduzione per i salti:
i salti, in assembly possono essere di due tipi:
-incondizionato (jmp) ovvero jump = salto in inglese
-condizionato (je, jne, jz, jnz, ecc.) questo tipo di salti agiscono a seconda che una condizione avviene o non avviene.
Per uqesto reverse ci interesseremo ai salti condizionati je e jne:
-je (jump if equal = salta se è uguale) salta se si è verificata una condizione di eguaglianza in un confronto.
-jne (jump if not equal = salta se non è uguale) salta se non si è verificata una condizione di ugualglianza in un confronto.

Bene, dopo questa piccola introduzione ai salti direi che possiamo cominciare con il reversing vero e proprio:
cominciamo ad aprire il crackme: vedremo una finestra che chiede di inserire un codice, se ne inseriamo uno a caso, per esempio 1234 una messagebox ci dirà che il codice inserito è errato.
Ora apriamo il crackme con W32Dasm e clicchiamo sul tasto 2 (in questa immagine ho solo elencato due tasti visto che sono gli unici due che useremo in questo reverse)


http://www.rk0x14578.altervista.org/tasti.GIF

e poi selezioniamo dalla finestra che ci appare la scritta "Wrong Serial" (che è il testo della messagebox di quando sbagliamo codice).
Arriveremo ora a una schermata simile a questa:



http://www.rk0x14578.altervista.org/Immagine01.GIF

il cerchio blu indica le informazioni (titolo e testo) della messagebox che dobbiamo ottenere.
vedete circondato in rosso il testo wrong serial e una frecia lo collega a questa scritta:

* Referenced by a (U)nconditional or (C)onditional jump at Address:
|:004011B6(C)

Cosa sarà mai?
Semplicemente spiega che quella sarà la destinazione di un salto condizionato (si capicsce dalla (C) affianco al numero (una specie di indirizzo)), ma da dove proviene il salto?
E'presto detto: clicchiamo sul tasto 1 e inseriamo nella finestra che compare il codice che troviamo (004011B6)
Il programma cercherà la provenienza di questo indirizzo, e ci porterà molto lontano...


http://www.rk0x14578.altervista.org/Immage02.GIF

La freccia rossa indica la provenienza dell'indirizzo, e vediamo un jne (jump if not equal, ricordate?).
Possiamo vedere che salta se non è uguale e quindi se non è uguale si effettuerà il percorso indicato dalla linea blu altrimenti (se è uguale) seguirà la linea viola.
Una domanda vi sarà sorta, ma uguale a cosa?

beh, allora, analizziamo il punto 1:

viene richiamata una funzione API di windows, ovvero GetWindowTwxtLengthA. ovvero una routine che restituisce la lunghezza della stringa di una casella di testo.

il template della funzione è il seguente:

int GetWindowsTextLength(

HWND hWnd //handle of the window or control with text
);
la funzione chiede coma parametro un handle (numero univoco che referenzia ogni processo, finestra, pulsante, ecc di windows) E restituisce un numero di tipo intero, che in poche parole ci dice quanto è lunga la stringa.
questo valore viene messo nel registro eax, e poi viene spostato nel registro esi con l'istruzione mov (figura 2).
il testo inserito viene poi confrontato con l'handle, ovvero 0000000C (sempre figura 2), naturalmente 0C è un numero esadecimale, che trasformato in decimale con la calcolatrice di windows diventa 12.
quindi il flusso del programma è questo:

si prende la lunghezza del testo inserito,
confronto con 12
è uguale?
si
finestra congratulazioni
no
finestra di errore

il nostro scopo è quello di fare in modo che ogni valore inserito sia quello giusto per la finestra di congratulazioni quindi dovremo modificare quel jne, che regola tutto.
chiudiamo W32Dasm e apriamo il crackme con HIEW. Prima però prendiamo nota i quel 751E che troviamo affianco al jne.
ora, con HIEW, premiamo due volte invio da quando abbiamo aperto il crackme, e comparirà qualcosa tipo:


http://www.rk0x14578.altervista.org/Immagine03.GIF

ora premiamo F7 e inseriamo il codice 751E senza spazi e premiamo invio
arriveremo a un punto cosi

.oo4o11B6: 751E jne .004011D6 -------- (3)

ora premiamo F3 e potrmo modificare quel 751E, inseriamo al suo posto 9090 (ovvero nop nop, con il codice 90 non verrà eseguita nessuna operazione)(ah, il 'codice', come l'ho definito io si chiama opcode, l'opcode di je è 74, quello di jne è 75, infatti basta guardare la prima parte del codice 751E per vedere l'opcode di jne
anche se i due 90 saranno su due linee differenti non importa, premiamo F9 per salvare e poi ESC per uscire.
In questo modo, mettendo 9090 non ci sarà più nessun salto, quindi troveremo in ogni caso la routine di congratulazioni.
semplice, vero?

ciao ciao

_________________
L'unico computer sicuro, è un computer spento.

Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia

Tornare in alto Andare in basso
Vedere il profilo dell'utente
darkjoker
Admin
Admin


Numero di messaggi: 813
Data d'iscrizione: 30.07.07

MessaggioOggetto: Re: un po'di reverse su windows   Ven Ago 31, 2007 9:17 am

azz... mi sono dimenticato il link per gli strumenti... rimedio subito...

http://www.rk0x14578.altervista.org/reverse_windows.zip

come sempre se non funziona copiate il link nella barra URL...

ciao!

_________________
L'unico computer sicuro, è un computer spento.

Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia

Tornare in alto Andare in basso
Vedere il profilo dell'utente
black hole
membro
membro


Numero di messaggi: 90
Data d'iscrizione: 03.10.07

MessaggioOggetto: Re: un po'di reverse su windows   Gio Nov 22, 2007 5:18 pm

il link di immagine03 non mi funge e invece quello di immage02 in realtà è immagine02 giusto?
Tornare in alto Andare in basso
Vedere il profilo dell'utente
darkjoker
Admin
Admin


Numero di messaggi: 813
Data d'iscrizione: 30.07.07

MessaggioOggetto: Re: un po'di reverse su windows   Ven Nov 23, 2007 6:25 pm

.. ehm, c'è stato un'po di casino con le immagini... please wait...

_________________
L'unico computer sicuro, è un computer spento.

Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia

Tornare in alto Andare in basso
Vedere il profilo dell'utente
black hole
membro
membro


Numero di messaggi: 90
Data d'iscrizione: 03.10.07

MessaggioOggetto: Re: un po'di reverse su windows   Sab Nov 24, 2007 1:50 pm

ok...
Tornare in alto Andare in basso
Vedere il profilo dell'utente
darkjoker
Admin
Admin


Numero di messaggi: 813
Data d'iscrizione: 30.07.07

MessaggioOggetto: Re: un po'di reverse su windows   Lun Nov 26, 2007 4:10 pm

ehm... mo non c'ho piu quei programmi che girano su winzozz... mi devo mettere su qualche pc con winzozz e da li scaricare i prog per salvare le schermate...

_________________
L'unico computer sicuro, è un computer spento.

Nel software esiste sempre almeno un bug, generalmente è localizzabile tra la tastiera e la sedia

Tornare in alto Andare in basso
Vedere il profilo dell'utente
BlackLight
Moderatore
Moderatore


Numero di messaggi: 277
Età: 25
Data d'iscrizione: 22.08.07

MessaggioOggetto: Re: un po'di reverse su windows   Lun Nov 26, 2007 10:32 pm

Eh eh per un esercizio molto simile in ambiente Unix vi rimando al mio tutorial sul reversing e al mio piccolo esercizio proposto Wink

_________________
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/CM/CC/E/IT/LS/M d-(--) s:- a-- C+++$ UBL++++$ P+++ L+++++$ E- W+++ N+ o? K? w-- !O !M>+ !V PS+++ PE-- Y++ PGP+ !t !5 !X R+ tv-- b++>+++ DI? D+ G>+++ e++>++++ h r++ y+++
------END GEEK CODE BLOCK------

Codice:
blacklight@nightmare:/$ touch figa
touch: cannot touch `figa': Permission denied
Tornare in alto Andare in basso
Vedere il profilo dell'utente http://blacklight.gotdns.org
 

un po'di reverse su windows

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto 
Pagina 1 su1

 Argomenti simili

-
» Deframmentazione dei dischi con Windows 7
» Installazione di Windows XP su SDHC
» Windows 7 SP1 Dualboot 32/64 Terza Edizione
» Antivirus free per Windows una guida pdf
» Programmi Windows famosi sotto Linux

Permesso del forum:Non puoi rispondere agli argomenti in questo forum
Xhack :: Other :: Reverse Engineering-