Najlepsza odpowiedź
To jest bardzo szerokie pytanie. To zależy od rodzaju produktów, którymi jesteś zainteresowany.
Oto kilka przykładów inżynierii odwrotnej, w których brałem udział:
Odpowiedź Michaela Durcana na pytanie Jak wygląda inżynieria odwrotna wykonanej przekładni czołowej?
Odpowiedź Michaela Durcana na pytanie Jak działają nowoczesne techniki inżynierii odwrotnej, takie jak przenośna maszyna współrzędnościowa i skanowanie laserowe?
Odpowiedź Michaela Durcana na pytanie Jak mogę nauczyć się inżynierii odwrotnej?
Odpowiedź
Zakładam, że nie jesteś ekspertem w dziedzinie informatyki i programowania niskiego poziomu, więc odpowiedź brzmi: tak, to jest bardzo trudne.
Istnieją dwa „poziomy” języków programowania; Wysoki i niski. Wysokie języki programowania są ogólnie dość łatwe w użyciu i nauce. Są czytelne dla człowieka i muszą być „przetłumaczone” przez maszyny, aby mogły zostać wykonane. Przykłady języków programowania wysokiego poziomu to Javascript, R, Python, Java i wiele innych.
Języki programowania niskiego poziomu są trudniejsze do nauczenia. Potrzebują lepszego zrozumienia sposobu działania pamięci i procesów komputera. Najlepszym i najbardziej znanym przykładem języka niskiego poziomu jest C. C jest bardzo potężny i raczej trudny do nauczenia. Ale jest o wiele bardziej zrozumiały dla maszyny niż języki programowania wysokiego poziomu. Język programowania dość niskiego poziomu to Assembly. Kod asemblera istnieje w różnych typach, ale wszystkie są skomplikowane, denerwujące i bardzo trudne do odczytania. Kod asemblera jest jednak główną częścią inżynierii odwrotnej. Jeśli coś poddajesz inżynierii wstecznej, przeglądasz / zmieniasz kod asemblera programu.
Musisz zrozumieć, że asembler jest zasadniczo językiem ojczystym. Jeśli piszesz program, zawsze jest z nim kod asemblera. Albo twój kompilator tłumaczy twój kod na asembler, albo interpreter robi to za ciebie w czasie rzeczywistym.
Wszystko to w zasadzie oznacza, że stanie się prawdziwym profesjonalnym inżynierem wstecznym jest łatwe. Wszystko, co naprawdę musisz zrobić, to biegle posługiwać się różnymi typami asemblera i nauczyć się programować w C. Jedynym problemem jest to, że te dwie rzeczy są trudne do wykonania.
Powodzenia!