Discussione Reversing Consigli per imparare il Reverse Engineering

iBreak

Utente Electrum
3 Febbraio 2014
254
18
57
120
Buon pomeriggio cari colleghi, oggi sono qui per chiedere a voi, persone altamente competenti, qualche utile consiglio per incominciare con il reverse. Ho provato qualche guida e ad analizzare qualche eseguibile, ma mi risulta sempre arabo capire certe situazioni e di conseguenza mi incazzo e chiudo tutto..
So che è un ambito molto grosso e altamente complesso, ma onde evitare un possibile abbandono, mi piacerebbe avere un dialogo aperto con tutti voi che ci siete già passati. Come si può iniziare? come si evita la sensazione di abbandono dopo i primi ostacoli e quali sono i consigli per non far pesare troppo lo studio e le possibili applicazioni di questo ambito?
Io vi ringrazio anticipatamente con la speranza che qualcuno di buona volontà possa rispondermi :D
 
  • Mi piace
Reazioni: zipippino
Dovresti definire le tue basi di conoscenza per farti aiutare meglio. Però un consiglio che posso darti e di partire dalle situazioni che non riesci a comprendere e da li fare un passo indietro e studiare l'azione prima di arrivare a quel determinato punto... Da autodidatta e fondamentale il tuo metodo di studio che ti permette di apprendere. Inoltre online è pieno di materiale, parti da quello gratuito studiando tutto per principio e per farti delle basi e successivamente cerchi di colmare le lacune che hai con dei corsi mirati anche online a pagamento
 
  • Mi piace
Reazioni: zipippino e iBreak
Ci sono molti siti che propongono challenge di vario genere, tra cui il reversing. Potresti partire da esempi banali e piano piano esercitarti con una scala crescente. In alternativa ci sono molti libri che spiegano reversing/creazione di exploit. Puoi approcciarti a uno o più di quelli e nel mentre reversare dei programmi scritti da te, in modo da riuscire a capire esattamente gli abbinamenti tra sorgente decompilato e sorgente originale
 
  • Mi piace
Reazioni: zipippino
Dovresti definire le tue basi di conoscenza per farti aiutare meglio. Però un consiglio che posso darti e di partire dalle situazioni che non riesci a comprendere e da li fare un passo indietro e studiare l'azione prima di arrivare a quel determinato punto... Da autodidatta e fondamentale il tuo metodo di studio che ti permette di apprendere. Inoltre online è pieno di materiale, parti da quello gratuito studiando tutto per principio e per farti delle basi e successivamente cerchi di colmare le lacune che hai con dei corsi mirati anche online a pagamento
Innanzitutto ti ringrazio per la risposta. Hai ragione, non ho preso in considerazione le mie reali esperienze. Sono uno studente universitario nel campo dell'IT con una conoscenza abbastanza approfondita nei linguaggio object oriented come C# .Net, Java, Python Ed altri. Ho avuto una serie di esperienze nello sviluppo di alcune librerie per interpretare dei file proprietari senza conoscere la reale struttura dati, ho contributo al miglioramento di un Emulatore di un gioco su GitHub ed a oggi ho molte repo con miei progetti (soprattutto C#).
Grosso modo questo é il mio livello, io ti ringrazio dei consigli e spero di entrare presto anche in questo mondo a me nuovo
 
  • Mi piace
Reazioni: zipippino
Beh hai già un buon curriculum parti da ciò che conosci magari dai tuoi stessi software o su quelli che hai lavorato, e prova le varie tecniche e metodi per raggiungere il risultato è non ti abbattere
 
  • Mi piace
Reazioni: iBreak
Beh hai già un buon curriculum parti da ciò che conosci magari dai tuoi stessi software o su quelli che hai lavorato, e prova le varie tecniche e metodi per raggiungere il risultato è non ti abbattere
Forse l'abbattimento é uno dei fattori più rilevanti nello studio del Reverse
 
Io penso che dipenda sempre da quale sia il livello che si vuole raggiungere. Ad esempio, i linguaggi che hai menzionato (.net, java, python) sono tutti linguaggi interpretati, dai quali (a meno di protezioni esterne)si può risalire a qualcosa di molto simile al codice sorgente, visto che interpretare il bytecode risulta molto agevole, e che esistono molti tools in grado di farlo senza sforzo.
Diverso è il discorso per le applicazioni native che non utilizzano un framework intermedio, come C/C++/delphi/VB ecc. Con questi ultimi dovrai per forza affrontare un'analisi sul codice assembly.
Comunque a mio avviso non è il caso di scoraggiarsi perchè piano piano si impara tutto. Quello che non devi fare è cercare bruciare le tappe, se lo farai il fallimento è quasi sicuro, ed il risultato piuttosto frustrante.
Io ti consiglio di iniziare da crackmes molto semplici, incrementando mano a mano la difficoltà, più o meno come abbiamo fatto tutti. Almeno chi, come me, ha iniziato nei primi anni 2000.
 
Io penso che dipenda sempre da quale sia il livello che si vuole raggiungere. Ad esempio, i linguaggi che hai menzionato (.net, java, python) sono tutti linguaggi interpretati, dai quali (a meno di protezioni esterne)si può risalire a qualcosa di molto simile al codice sorgente, visto che interpretare il bytecode risulta molto agevole, e che esistono molti tools in grado di farlo senza sforzo.
Diverso è il discorso per le applicazioni native che non utilizzano un framework intermedio, come C/C++/delphi/VB ecc. Con questi ultimi dovrai per forza affrontare un'analisi sul codice assembly.
Comunque a mio avviso non è il caso di scoraggiarsi perchè piano piano si impara tutto. Quello che non devi fare è cercare bruciare le tappe, se lo farai il fallimento è quasi sicuro, ed il risultato piuttosto frustrante.
Io ti consiglio di iniziare da crackmes molto semplici, incrementando mano a mano la difficoltà, più o meno come abbiamo fatto tutti. Almeno chi, come me, ha iniziato nei primi anni 2000.
É un onore per me che tu abbia risposto a questo post. Girando un po' su Inforge sono imbattuto in un tuo post in cui parlavi del team di cui fai parte SND. Dando un occhiata sul loro sito web, ho notato che un certo Iena ha pubblicato la bellezza di 40 tutorial su Reverse di base che ad oggi sto seguendo con molto interesse. Grazie mille dei consigli, per ora sto cercando di comprendere al meglio il mondo del Reverse
 
  • Mi piace
Reazioni: zipippino
Dando un occhiata sul loro sito web, ho notato che un certo Iena ha pubblicato la bellezza di 40 tutorial su Reverse di base che ad oggi sto seguendo con molto interesse.

In realtà, pur facendo ancora parte del team, sono molti anni che non partecipo attivamente, la vita cambia e le priorità oggi sono altre.
Però, oltre i tutorial di lena, il team SND può vantare una delle comunità più longeve al mondo sul reverse engineering, una requester board tra le più utilizzate, e tanti membri, di cui alcuni anche molto bravi, capaci ad esempio di essere i primi ad analizzare i packers più complessi, o creare key generators per chiavi ecdsa.

Grazie per l'interesse e in bocca al lupo.
 
  • Mi piace
Reazioni: iBreak e zipippino
Visto che si sta parlando di reversing e assembly ne approfitto per chiedere una dritta (non vorrei creare una nuova discussione).
Sono ancora alle prime armi ed oltre alla teoria vorrei fare anche della pratica appunto con i crackmes @EvOlUtIoN_OGM, ma non so con quale IDE/software iniziare. Avete qualche consiglio?
 
Ultima modifica:
In realtà, pur facendo ancora parte del team, sono molti anni che non partecipo attivamente, la vita cambia e le priorità oggi sono altre.
Però, oltre i tutorial di lena, il team SND può vantare una delle comunità più longeve al mondo sul reverse engineering, una requester board tra le più utilizzate, e tanti membri, di cui alcuni anche molto bravi, capaci ad esempio di essere i primi ad analizzare i packers più complessi, o creare key generators per chiavi ecdsa.

Grazie per l'interesse e in bocca al lupo.
Grazie a te per i tuoi preziosi consigli
Messaggio unito automaticamente:

Visto che si sta parlando di reversing e assembly ne approfitto per chiedere una dritta (non vorrei creare una nuova discussione).
Sono ancora alle prime armi ed oltre alla teoria vorrei fare anche della pratica appunto con i crackmes @EvOlUtIoN_OGM, ma non so con quale IDE/software iniziare. Avete qualche consiglio?
Da nabbo ti posso dire che dipende molto da ciò che ti serve fare. Attualmente io mi sto esercitando sui CrackMe di Predator per livelli in base alle competenze che ho acquisito. Attualmente sto utilizzando Ollydbg per seguire i tutorial su un sistema win7 32bit mentre, per piccole analisi personali su Win10 uso x64dbg che risulta essere molto simile a Olly ma nettamente più aggiornato e funzionale sotto alcuni punti di vista. Pian piano ho scoperto la bellezza e la purezza dei software fatti in asm e C++, purezza che difficilmente trovo in altri linguaggi (VB6 ad esempio).
Per me il Reverse oltre ad essere un valido strumento per l'analisi degli eseguibili, è anche utilissimo per capire il funzionamento di molte cose che noi oggi diamo per scontato e che spesso servono a rendere il programmatore consapevole di come un software può essere ottimizzato o perfezionato.
Guardando il Reverse sotto questi due punti di vista , riesco ad apprezzare ogni cosa, dalla più semplice alla più complessa e ti consiglio vivamente di provare. Conoscendo poco e niente mi ha già dato grossi grattacapi ma anche tante soddisfazioni