Comprensione dei concetti di ingegneria inversa
Gli ingegneri a volte hanno bisogno di pensare al contrario per analizzare un prodotto. Ad esempio, un ingegnere meccanico può trarre conclusioni sulla produzione di un prodotto in base al suo design e alle sue proprietà fisiche. Potrebbero anche essere in grado di produrre lo stesso prodotto se ne hanno una conoscenza approfondita.
Puoi anche paragonare il reverse engineering alle prove di equazioni matematiche. Quindi, come viene utilizzato il reverse engineering?
Che cos’è l’ingegneria inversa?
Il reverse engineering è il processo di analisi di un sistema allo scopo di riprodurlo o migliorarlo. Se osservi le aree di lavoro del reverse engineering, puoi vedere che puoi usarlo per molti scopi diversi. Se lo guardi dal punto di vista della sicurezza informatica, è possibile eseguire le seguenti operazioni con metodi di reverse engineering:
- Analisi della fonte di software non open source
- Analisi della vulnerabilità
- Analisi dei malware
- Cracking e patch
Al giorno d’oggi puoi vedere il reverse engineering utilizzato anche nei giochi per computer. Ad esempio, gli sviluppatori spesso creano mod software utilizzando metodi di reverse engineering.
Nel campo del reverse engineering esistono due diversi metodi di analisi: statico e dinamico. Si esegue un’analisi statica quando si analizza un programma senza eseguirlo effettivamente. Un metodo di analisi dinamica, invece, richiede di eseguire il programma per osservarne il comportamento ei dati che utilizza.
Ma prima di eseguire l’analisi per il reverse engineering, ci sono alcuni termini importanti che devi conoscere su come funziona l’architettura del computer.
Parti principali dell’architettura del computer
Il reverse engineering è praticamente impossibile se non si comprende l’architettura del computer. Devi studiare le quattro parti principali:
- Input : un insieme di metodi per l’inserimento dei dati.
- CPU : la CPU elabora i dati in arrivo e li trasmette ai suoi proprietari. È l’unità di elaborazione centrale.
- Memoria : lo spazio che contiene temporaneamente i dati durante l’elaborazione.
- Output : il risultato visualizzato dall’utente finale.
Puoi tenere a mente tutti questi problemi principali con un esempio, come quando premi la lettera A sulla tastiera. Quando lo si preme, si verifica un evento di input. Dopo questa fase, la CPU elabora i dati e utilizza un piccolo spazio di memoria per memorizzarli. Infine, vedrai la lettera A sullo schermo, terminando il processo con l’output.
Tuffati nelle profondità della CPU
Se vuoi davvero diventare un esperto di reverse engineering e approfondire questo argomento, devi avere una conoscenza dettagliata dell’hardware, dei linguaggi di basso livello e soprattutto della CPU. Gli argomenti chiave che devi conoscere sulla CPU sono:
- Unità di controllo : è responsabile dell’elaborazione dei dati nella CPU e del loro trasferimento nei campi pertinenti. Puoi pensare a questa unità come a un meccanismo di controllo del percorso.
- ALU : sta per unità logica aritmetica. È qui che si svolgono alcune operazioni aritmetiche e logiche. Se approfondisci la matematica, vedrai che le quattro operazioni di base sono essenzialmente variazioni sull’addizione. Quindi l’ALU si basa sull’aggregazione. Ad esempio, sottrarre due da tre equivale ad aggiungere meno due a tre.
- Registri : sono le aree all’interno della CPU che contengono i dati elaborati. Esistono diversi tipi di registro, proprio come esistono diversi tipi di variabile in un linguaggio di programmazione. Un registro è responsabile del mantenimento del tipo e degli attributi dei dati ad esso assegnati.
- Segnali : se si desidera che la CPU esegua molte operazioni diverse contemporaneamente, è necessario un metodo per organizzarle. Gli elementi che fanno questo sono chiamati segnali. Ogni transazione agisce in base a segnali che assicurano che non interferisca con un altro processo.
- Bus : Il percorso utilizzato dai dati per spostarsi da un’unità all’altra. Nota come il nome suggerisce il trasporto.
Concetti che sentirai spesso nel reverse engineering
Comprendere come la CPU elabora i dati e li archivia in memoria, insieme al concetto di registri, può essere molto utile durante il reverse engineering. In particolare, puoi utilizzare lo schema sottostante per comprendere meglio il concetto di memoria:
Infine, per l’analisi di reverse engineering, è necessario conoscere alcuni concetti di base sui registri. Sono uno degli argomenti su cui ti concentrerai di più. Ecco alcune spiegazioni su dati, puntatori e registri indice che ti saranno utili nel modo più conciso:
- 1. EAX : sta per Accumulator Register. Di solito salva qui i dati che rientrano nella categoria delle operazioni aritmetiche.
- 2. EBX : sta per Base Register. Svolge un ruolo nell’indirizzamento indiretto.
- 3. EDX : sta per Data Register. EDX aiuta altri registri.
- 4. EIP : sta per Instruction Pointer. Contiene l’indirizzo del dominio da eseguire.
- 5. ESP : contiene l’indirizzo di base.
- 6. ESI : contiene le informazioni sull’indice di origine.
- 7. EDI : conserva le informazioni sull’indice di destinazione.
Dovresti ricercare tutti questi separatamente per comprenderne le sfumature. Ma se guardi alle basi e cerchi di capire la logica aziendale, indipendentemente dall’architettura del processore con cui stai lavorando, l’analisi del codice per il reverse engineering sarà abbastanza semplice.
Il reverse engineering spesso inizia con il codice macchina. Potresti comprendere molti dei termini precedenti se hai familiarità con l’assembly o hai un comando di architetture di processori a 32 o 64 bit. Se vuoi imparare l’assemblaggio da zero, sarà estremamente utile nel reverse engineering.
Cosa farai con tutto questo?
Se hai una buona conoscenza del reverse engineering, puoi eseguire l’analisi del codice indipendentemente dal sistema operativo o dall’architettura del processore con cui stai lavorando. Ad esempio, è possibile trovare versioni crackate di molti programmi o giochi per computer. Questo è un metodo completamente illegale.
Tuttavia, se vuoi diventare un professionista della sicurezza informatica etica, dovrai utilizzare i reverse engineer per capire perché questi programmi crackati vengono violati. Se vuoi avanzare nel reverse engineering o sei appena agli inizi, sarebbe una buona scelta se provassi a conoscere la relazione tra hardware e codice macchina.
Lascia un commento