Migliore risposta
Questa è una domanda molto ampia. Dipende dal tipo di prodotti a cui sei interessato.
Di seguito sono riportati alcuni esempi di reverse engineering in cui sono stato coinvolto:
La risposta di Michael Durcan a How is reverse engineering di un ingranaggio cilindrico fatto?
La risposta di Michael Durcan a Come funzionano le moderne tecniche di ingegneria inversa come la CMM portatile e la scansione laser?
La risposta di Michael Durcan a Come posso impari il reverse engineering?
Risposta
Presumo che tu non sia un esperto in informatica e programmazione di basso livello, quindi la risposta è sì, è molto difficile.
Esistono due “livelli” di linguaggi di programmazione; Alto e basso. I linguaggi di programmazione elevati sono generalmente piuttosto facili da usare e da imparare. Sono abbastanza leggibili dalluomo e devono essere “tradotti” dalle macchine per essere eseguiti. Esempi di linguaggi di programmazione di alto livello sono Javascript, R, Python, Java e molti altri.
I linguaggi di programmazione di basso livello sono più difficili da imparare. Hanno bisogno di una maggiore comprensione del funzionamento della memoria e dei processi del computer. Lesempio migliore e più famoso di una lingua di livello piuttosto basso è C. Il C è molto potente e piuttosto difficile da imparare. Ma è molto vicino alla macchina comprensibile rispetto ai linguaggi di programmazione di alto livello. Un linguaggio di programmazione di livello piuttosto basso è Assembly. Il codice assembly esiste in diversi tipi ma sono tutti complicati, fastidiosi e molto difficili da leggere. Tuttavia, il codice di assemblaggio è una parte importante nel Reverse Engineering. Se decodifichi qualcosa, visualizzi / modifichi il codice Assembly di un programma.
Devi capire che Assembly è fondamentalmente la lingua madre. Se scrivi un programma cè sempre il codice Assembly con esso. O il tuo compilatore traduce il tuo codice in Assembly o linterprete lo fa per te in tempo reale.
Ciò che tutto ciò significa fondamentalmente è che diventare un vero reverse-engineer professionista è facile. Tutto quello che devi fare è diventare fluente in diversi tipi di Assembly e imparare a programmare in C. Lunico problema è che queste due cose sono difficili da fare.
Buona fortuna!