Reverse Engineering la luce in fondo al tunnel, prima dell'abisso
Cosa ho fatto in questi tre lunghi giorni, tutti i giorni, tutto il giorno
Caro Dag del 2013,
finalmente sei riuscito a coronare uno dei tuoi sogni nel cassetto: riuscire a saper comprendere o quantomeno leggere un codice assembly per poterci mettere le mani sopra e manipolarlo a tuo piacimento.
Sono le 3 e 45, e finalmente dopo un tour de force durato 3 giorni, posso dire che ho concluso la lettura del manuale di magia nera “Practical Malware Analysis”.
YEEEEEEEEEE 🎉
Tecnicamente ho barato: alcuni hands-on non li ho fatti, mentre alcuni capitoli li ho saltati. Mi giustifico dicendo che a breve termine non mi servono, promettendomi di tornarci in un secondo momento con più calma. I capitoli più avanzati, a differenza dei primi, più semplici, sono quelli più interessanti e che permettono di scovare più malware da un punto di vista pratico.
Ma volevo fare una mini recensione!
Avete presente quando vorreste un bel manuale che vi spieghi per filo e per segno cosa dovete fare? Ecco, questo è perfetto sotto questo punto di vista: spiegazioni chiare e semplici, con una serie di esercizi allegati, con tanto di soluzione commentata passo passo. Non mi sorprende affatto che sia considerato come testo di riferimento: sarà anche molto vecchio e alcuni dei tool al quale fa riferimento sono stati sostituiti da cose più aggiornate, ma le basi a distanza di anni sono rimaste quelle.
Tra i contro invece mettiamo l’essere scritto in bianco e nero (a volte le cose con riquadri e colori si capiscono di più), ma soprattutto il fatto di essere rimasto fermo a Windows XP. Da un lato il fatto che il libro risulti ancora attuale è molto bello. Dall’altro però, alcuni esempi non funzionano. Ho speso circa 3 ore una sera per poi sorprendermi che non c’era soluzione all’esercizio che stavo facendo, se non usare una vecchia VM con Windows XP.
Dunque ho scelto di leggere questo manuale per passare un esame universitario ma anche perché questo argomento mi è sempre piaciuto e non ho mai avuto modo di approndirlo.
C’è un ma: fare reverse engineering, soprattutto di malware, richiede una base di conoscenza di Assembly (nel manuale viene spiegato), e di come si programma in generale. Ai tempi non sapevo programmare, figuriamoci fare le operazioni al contrario…
È assolutamente impensabile pensare di seguire un manuale del genere senza saper programmare, o senza fare gli hands-on.
C’è una bella differenza tra il leggere e il fare, e questo Feynman lo sapeva molto bene.
Ad ogni modo, gli esempi sul libro sono molto didattici. Vorrei riuscire a preparare una sorta di videolezioni fatte da me, perché si trovano in giro in inglese ma non in italiano. È vero che viviamo nel 2025, dove le traduzioni automatiche sono all’ordine del giorno, ma mi piacerebbe riuscire comunque a portare questo argomento su un canale YouTube.
Inoltre… ho preso tantissimi appunti usando Obsidian! Proprio non mi capitava di prendere così tanti appunti da un sacco di tempo. È bello arrivare a fine giornata con tante cose apprese e scritte, a mo’ di diario.
Il mondo dei malware e del reverse engineering è un mondo mistico fatto di sigle, di misure antireverse, e di tanto, tanto codice Assembly. Sicuramente fare l’esame è stata una buona motivazione, ma non mi sarei mai concentrato così tanto ad approfondire.
Sono stati tre giorni incredibili dove ho imparato tantissime cose, e non vedo l’ora di metterle in pratica, magari cominciando a fare i crack-me o altre sfide online, sino ad arrivare ai sample degli esami.