Inżynieria odwrotna to rozbieranie obiektu na części, by zobaczyć jak działa, w celu powielenia albo ulepszenia obiektu. Praktyka ta, zaczerpnięta ze starszych gałęzi przemysłu, jest obecnie często stosowana w sprzęcie komputerowym i oprogramowaniu. Inżynieria wsteczna oprogramowania polega na odwróceniu kodu maszynowego programu (ciąg 0 i 1 wysyłany do procesora logicznego) z powrotem do kodu źródłowego, w którym został napisany, przy użyciu instrukcji języka programu.
Inżynieria wsteczna oprogramowania jest wykonywana w celu odzyskania kodu źródłowego programu, ponieważ kod źródłowy został utracony, aby zbadać, w jaki sposób program wykonuje pewne operacje, aby poprawić wydajność programu, naprawić błąd (poprawić błąd w programie, gdy kod źródłowy nie jest dostępny), zidentyfikować złośliwą zawartość w programie, taką jak wirus lub program napisany do użytku z jednym mikroprocesorem do użytku z innym. Inżynieria wsteczna w celu kopiowania lub powielania programów może stanowić naruszenie praw autorskich. W niektórych przypadkach licencjonowane użytkowanie oprogramowania wyraźnie zabrania inżynierii wstecznej.
Ktoś, kto zajmuje się inżynierią wsteczną oprogramowania, może użyć kilku narzędzi do dezasemblacji programu. Jednym z nich jest dumper szesnastkowy, który drukuje lub wyświetla numery binarne programu w formacie szesnastkowym (który jest łatwiejszy do odczytania niż format binarny). Znając wzory bitów, które reprezentują instrukcje procesora, jak również długości instrukcji, inżynier odwrotny może zidentyfikować pewne części programu, aby zobaczyć, jak one działają. Innym popularnym narzędziem jest dezasembler. Dezasembler odczytuje kod binarny, a następnie wyświetla każdą wykonywalną instrukcję w formie tekstowej. Dezasembler nie potrafi odróżnić wykonywalnej instrukcji od danych używanych przez program, więc używa się debuggera, który pozwala mu uniknąć dezasemblacji części programu zawierającej dane. Narzędzia te mogą być wykorzystane przez crackera do modyfikacji i uzyskania dostępu do systemu komputerowego lub spowodowania innych szkód.
Inżynieria wsteczna sprzętu polega na rozebraniu urządzenia w celu sprawdzenia, jak ono działa. Na przykład, jeśli producent procesora chce zobaczyć, jak działa procesor konkurencji, może kupić procesor konkurencji, rozmontować go, a następnie stworzyć procesor podobny do niego. Proces ten jest jednak nielegalny w wielu krajach. Ogólnie rzecz biorąc, inżynieria odwrotna sprzętu wymaga ogromnej wiedzy i jest dość kosztowna.
Inny rodzaj inżynierii odwrotnej polega na tworzeniu trójwymiarowych obrazów produkowanych części, gdy schemat nie jest dostępny, w celu regeneracji części. Aby odwrócić inżynierię części, część jest mierzona przez współrzędnościową maszynę pomiarową (CMM). Podczas pomiaru generowany jest obraz trójwymiarowy, który jest wyświetlany na monitorze. Po zakończeniu pomiaru, obraz jest wymiarowany. Każda część może być poddana inżynierii odwrotnej przy użyciu tych metod.
Termin „inżynieria przyszłości” jest czasami używany w przeciwieństwie do inżynierii odwrotnej.