Dubugger OllyDbg

OllyDbg debugger

OllyDbg un ottimo debugger, operante in ambiente Windows a 32bit, possiamo descriverlo con tre aggettivi: rapido, efficace e semplice da usare. Sostituisce l’ormai vecchio Softice e non teme confronti con nessun’altro debugger Windows. Ottimo anche per chi è poco esperto, grazie alla sua intuitiva interfaccia grafica.

OllyDbg è un debugger Windows, ossia un programma nato per analizzare il codice sorgente di un software e scoprirne eventuali bug oppure utilizzarlo per fare del reversing. Il codice sorgente viene mostrato in assembly, esso non è altro che un linguaggio di programmazione che si avvicina al linguaggio macchina dei computer.

Se non lo avete presente, un esempio di linguaggio assembly può essere il seguente:
MOV BYTE PTR DS:[42F4D5],AL
LEA EAX,DWORD PTR SS:[EBP-14]
PUSH EAX

Con un debugger, come detto prima possiamo analizzare un codice di un programma, ad esempio possiamo impostare dei breakpoint, ossia delle interruzioni che fanno fermare l’esecuzione del programma, e ci consentono di analizzare piccole porzioni di codice del programma che stiamo analizzando.
Come debugger è molto apprezzato nella comunità informatica perché è open source, funziona unicamente a 32 bit su sistemi Windows, si possono installare svariati plug-in e soprattutto ha un’interfaccia grafica che lo rende molto facile ed intuitivo rispetto agli altri debugger esistenti, l’unico punto debole che ha è che funziona a livello ring3, ossia usermode rispetto al famoso debugger SoftICE della NuMega che lavora a ring0.
Per chi non sapesse cosa si intende per lavorare a ring0 o a ring3 ecco la spiegazione:

I ring sono dei livelli di privilegio e/o di sicurezza che un processore fornisce, ad esempio parlando di processori x86 i ring vanno da 0 a 3. Per semplificare il concetto immaginiamo il computer come la terra, dove la superficie è il ring3(Applicativi software), il secondo strato è il ring2 e così via, arriviamo al centro della terra e troviamo il ring0(Kernel)

Ritornando ad OllyDbg, anche se funziona a ring3, và benissimo per analizzare le applicazioni di tutti i giorni.

Diamo uno sguardo prima ai requisiti per farlo funzionare correttamente:

Processore: x86
Sistema operativo: Microsoft Windows 95, Windows 98, Windows NT 4, Windows 2000,
Windows Xp, Windows Vista e Windows 7
Ram: 64 MB (128 MB consigliata)
Hard disk: 2 MB liberi

Questa è l’interfaccia grafica di Ollydbg:

Da questa interfaccia si può vedere il codice macchina di un programma, cosa contiene ogni indirizzo di memoria del processore e come vengono passate le informazioni tra un registro e l’altro, si può dire che questa finestra chiamata CPU è il cuore di tutto il nostro programma.

Esistono diverse finestre che possiamo aprire tra le quali:
Log: Mostra i plug-in e i moduli caricati in memoria
Memory: Mostra come il computer assegna la memoria per un determinato programma che
vogliamo debuggare.
Excutable Modules: Mostra tutti i moduli caricati dal programma, per modulo si intende ad
esempio le DLL che il programma richiama durante tutta la sua
esecuzione.

Esistono tante altre interfacce disponibili, basta richiamarle dal menu View per vedere cosa contengono.
Con questa immagine faccio vedere solo alcune delle principali finestre che possiamo aprire:

Cosa molto importante, come detto prima, è la possibilità di gestire i breakpoint in modo molto semplice, si possono impostare ad esempio alla voce nel menu Plug in e poi Command line. Avendo impostato ad esempio un determinato breakpoint il programma alla sua prima esecuzione si fermerà proprio nel punto desiderato e dà lì potremo leggere e/o modificare i registri, modificare il nostro codice sorgente e commentare il codice a nostro piacimento.
Altra cosa molto importante è la funzione Step, ossia la possibilità di far avanzare il codice sorgente manualmente istruzione dopo istruzione, esistono diversi tipi di step, i principali sono:

Step into: ossia se nell’esecuzione del programma incontriamo una call, ossia una
chiamata ad un funzione,OllyDbg salta all’interno facendoci vedere che codice
viene eseguito in quella determinata funzione.
Step over: esegue un operazione un po’ diversa da Step into, ossia passa sopra quella
funzione andando all’istruzione dopo di essa, questo step non entrando
all’interno di una funzione non mostra cosa è contenuto al suo interno, ma si
limita unicamente ad eseguirla senza farla vedere.

Come detto prima OllyDbg consente di installare dei plug-in aggiuntivi, sono molto utili ad esempio se il programma che vogliamo andare a debuggare incorpora dei meccanismi di protezione in esso che non consentono il debug, attivando questi plug-in possiamo tranquillamente vedere la corretta esecuzione del programma.
Per ulteriori informazioni e dettagli sul programma consiglio di andare a leggere tutta la documentazione in inglese sul sito ufficiale, inoltre per chi volesse scaricare il programma consiglio la versione 1.10 che si può scaricare liberamente dal sito: http://www.ollydbg.de/

24 Comments

  1. lucagiuliodori 27 settembre 2011
  2. divivoma 27 settembre 2011
  3. stefano88 27 settembre 2011
  4. divivoma 27 settembre 2011
  5. stefano88 27 settembre 2011
  6. divivoma 27 settembre 2011
  7. stefano88 27 settembre 2011
  8. divivoma 27 settembre 2011
  9. stefano88 27 settembre 2011
  10. divivoma 27 settembre 2011
  11. Fabrizio87 27 settembre 2011
  12. Fabrizio87 27 settembre 2011
  13. Fabrizio87 27 settembre 2011
  14. Fabrizio87 27 settembre 2011
  15. divivoma 27 settembre 2011
  16. divivoma 27 settembre 2011
  17. Fabrizio87 27 settembre 2011
  18. divivoma 27 settembre 2011
  19. divivoma 27 settembre 2011
  20. Fabrizio87 27 settembre 2011
  21. stefano88 27 settembre 2011
  22. Fabrizio87 28 settembre 2011
  23. Francesco12-92 30 settembre 2011
  24. divivoma 30 settembre 2011

Leave a Reply