Aggiornato il: 31-08-2023 11:50
Reverse engineering
Il reverse engineering può essere visto come una sorta di progettazione al contrario. Si parte dal prodotto finito, che può essere di qualsiasi tipo, un dispositivo meccanico, elettronico, un software, lo si studia e analizza a fondo fino ad essere in grado di crearne uno che ne replichi il funzionamento, che migliori il dispositivo di partenza, che lo adatti a contesti diversi da quello per cui era stato progettato inizialmente.
Viene in sostanza invertito il processo di progettazione, ottenendo informazioni sui singoli componenti per comprendere appieno il funzionamento del disposito che si sta analizzando.
Molte aziende vietano il reverse engineering dei propri prodotti dichiarandolo nei propri termini di licenza. Se prendiamo in esame un videogioco, per quanto concerne la parte puramente grafica, la legislazione è chiara e semplice da applicare, è facile intuire che replicare gli stessi ambienti, disegni, modelli 3d sia una violazione del diritto d’autore. Riguardo il codice le cose si complicano e non poco, praticando la reverse engineering si riesce a risalire a parte del sorgente e, una volta compreso il funzionamento si può creare un programma che svolga lo stesso compito allo stesso modo, ma il codice comunque diverso. La materia è complicata e controversa e non è oggetto di questa trattazione.
Un curioso esempio di reverse engineering è quanto è accaduto a Grand Theft Auto III, Vice City qualche mese fa, troverete maggiori dettagli a questo indirizzo.
Reverse engineering in campo software
Invertendo il processo di sviluppo, i programmatori “smembrano” un software estraendone il codice sorgente. Fatto ciò, il software non ha più segreti, sarà possibile riscriverlo e ricostruire l’architettura del programma, modificarne il funzionamento e le strutture interne. Una volta compresi i processi del software, sarà anche possibile eliminare eventuali bug presenti. In ambito software si ricorre al reverse engineering principalmente per la risoluzione di problemi e l’analisi di prodotti concorrenti.
Il reverse engineering, per la ricostruzione di un software prevede il recupero del codice sorgente e la comprensione del protocollo di comunicazione
Ricostruzione del codice
Il codice soorgente di un software è scritto in uno dei tanti linguaggi di programmazione esistenti. Affinchè il codice, cosଠscritto, possa essere compreso ed eseguito dal nostro computer, viene successivamente convertito in linguaggio macchina. Se si sta facendo reverse engineering, questo processo deve essere invertito, ovvero si parte dal linguaggio macchina e bisogna tradurlo. Si effettua l’operazione inversa alla compilazione, infatti si usano degli strumenti chiamati proprio decompilatori. Non sono altro che programmi che dal binario generano un codice human readable. Non si riesce quasi mai ad ottenere l’intero codice sorgente e spesso non si riesce ad ottenerlo se non in linguaggio assembly, che è sempre human readable ma molto a basso livello e molto vivino al linguaggio macchina. Il fine del reverse engineering software non è quella di ricostruire per intero il sorgente, quindi il fatto che non lo si riesca a recuperare non è del tutto un male, poichè l’attenzione è rivolta piu che altro all’idea che c’è alla base del funzionamento di un dato programma.
Protocollo di comunicazione
Supponiamo si stia analizzando un software che mette in comunicazione vari dispositivi tra loro. In questi casi è di vitale importanza riuscire a capire come avviene lo scambio di informazioni, bisogna cioè riuscire a risalire alle regole del protocollo di comunicazione.
Per fare ciò si usano strumenti chiamati sniffer, che sono software in grado di analizzare il traffico dati in una rete.
Perchè è utilizzato il reverse engineering
In campo software il reverse engineering è utilizzato per vari motivi, il controllo e la gestione della qualità , analisi dei protocolli di comunicazione di rete, rilevamento di virus e altre minacce, portabilità e manutenzione, ricerca bug, miglioramento della compatibilità di un software con piattaforme e software di terze parti, e altro ancora. Inoltre viene spesso utilizzato per analiizzare prodotti concorrenti.
Tutorial, approfondimenti tematici e notizie in ambito tecnologico. Credits immagini: pexels.com, pixabay.com, wikipedia.org, Midjourney, StarryAI, se non diversamente specificato. Questo articolo non contiene necessariamente suggerimenti, pareri o endorsement diretti da parte del proprietario del progetto. Per contatti clicca qui