Bästa svaret
Detta är en mycket bred fråga. Det beror på vilken typ av produkter du är intresserad av.
Här är några exempel på reverse engineering som jag har varit inblandad i:
Michael Durcans svar på How is reverse engineering av en drivväxel klar?
Michael Durcans svar på Hur fungerar moderna tekniker för omvänd teknik som bärbar CMM och laserskanning?
Michael Durcans svar på Hur kan jag lära dig omvänd teknik?
Svar
Jag antar bara att du inte är expert på datavetenskap och lågnivåprogrammering så svaret är ja, det är väldigt svårt.
Det finns två ”nivåer” av programmeringsspråk; Hög och låg. Höga programmeringsspråk är i allmänhet ganska lätta att använda och lära sig. De är ganska mänskliga läsbara och behöver ”översättas” av maskiner för att köras. Exempel på programmeringsspråk på hög nivå är Javascript, R, Python, Java och många fler.
Programmeringsspråk på låg nivå är svårare att lära sig. De behöver mer förståelse för hur datorminne och processer fungerar. Det bästa och mest kända exemplet på ett ganska lågt språk är C. C är mycket kraftfullt och ganska svårt att lära sig. Men det är mycket nära maskinförståeligt än programmeringsspråk på hög nivå. Ett ganska lågt programmeringsspråk är Assembly. Monteringskod finns i olika typer men de är alla komplicerade, irriterande och mycket svåra att läsa. Monteringskod är dock en viktig del i Reverse Engineering. Om du omvandlar något ser du / ändrar församlingskoden för ett program.
Du måste förstå att församlingen i grunden är moderspråket. Om du skriver ett program finns alltid församlingskod med det. Antingen översätter din kompilator din kod till församlingen eller så gör tolk det för dig i realtid.
Vad allt detta i grund och botten betyder är att det är enkelt att bli en riktig pro-reverse engineer. Allt du verkligen behöver göra är att bli flytande i olika typer av sammankomster och lära dig hur man programmerar i C. Det enda problemet är att dessa två saker är svåra att göra.
Lycka till!