Inżynieria odwrotna

Technika odwracania, inżynieria odwrotna, inżynieria wsteczna, programowanie zwrotne (ang. reverse engineering) – proces badania produktu (urządzenia, programu komputerowego) w celu ustalenia, jak on dokładnie działa, a także w jaki sposób i jakim kosztem został wykonany. Zazwyczaj prowadzony w celu zdobycia informacji niezbędnych do skonstruowania odpowiednika. Innym zastosowaniem jest porównanie lub zapewnienie współdziałania z własnymi produktami. Uwaga: inżynierii wstecznej nie należy mylić z business process reengineering czy z reengineeringiem oprogramowania, którego to inżynieria odwrotna jest tylko etapem wstępnym.

Inżynieria wsteczna jest często wykorzystywana w celu osiągnięcia pewnej funkcjonalności, przy ominięciu konsekwencji wynikających z praw autorskich lub patentów.

Jest także używana przez wojsko, w celu skopiowania technologii opracowanych przez inne państwa, często wspomagana działalnością wywiadowczą. Zjawisko to było powszechne podczas II wojny światowej i zimnej wojny.

Inżynieria wsteczna oprogramowania i elementów komputera może być stosowana w celu zapewnienia obsługi nieudokumentowanym standardom zapisu, protokołom komunikacyjnym czy też urządzeniom peryferyjnym.

Inną przyczyną dokonywania inżynierii wstecznej jest przeprowadzenie audytu bezpieczeństwa, usunięcie zabezpieczeń przed kopiowaniem (cracking) lub chęć odblokowania ukrytej funkcjonalności produktu.

Inżynieria wsteczna jest dozwolona na terenie wspólnoty do tworzenia programów komputerowych o analogicznym działaniu. 2 maja, 2012, Trybunał Sprawiedliwości Unii Europejskiej orzekł w sprawie C-406/10 SAS Institute Inc. v World Programming Ltd, że funkcjonalność programu komputerowego nie jest chroniona prawami autorskimi we wspólnocie i licencje użytkowania są bezprzedmiotowe i nieważne, jeśli zabraniają obserwowania, studiowania i testowania programu komputerowego, by odtworzyć jego zachowanie w drugim programie. To orzeczenie zezwala na inżynierię wsteczną tak długo, jak program źródłowy lub obiektowy nie został skopiowany[1].

Najbardziej znane przykłady zastosowania tej techniki

edytuj

Niektóre techniki inżynierii wstecznej w informatyce

edytuj
  • dla protokołów komunikacyjnych:
    • analiza komunikatów (wykorzystuje sniffer)
    • automatyczne generowanie dużych podzbiorów przestrzeni komunikatów
  • dla oprogramowania:
  • dla Inżynierów lokalizacji
    • eksport oraz import danych tekstowych
    • testowanie aplikacji po tłumaczeniu
    • przygotowanie elementów nieedytowalnych
    • przystosowanie do wersji wielojęzycznej

Zobacz też

edytuj

Przypisy

edytuj
  1. Presse et Information [online], europa.eu [dostęp 2024-04-27].