Co je reverzní inženýrství | robot_dreams Czech
should_authorize_via_email
email.input_code tel.input_code
 
email.code_actual_for tel.code_actual_for
apply_exit_text
session_ended
to_homepage
Co je reverzní inženýrství a kde se používá

Co je reverzní inženýrství a kde se používá

A je to vůbec legální? ;)

Reverzní inženýrství je metoda demontáže objektu, která pomáhá pochopit, jak je navrženo už dříve vytvořené zařízení, proces, systém nebo část softwaru. Inženýr výrobek rozebere, aby pochopil, jak funguje, a poté znovu vytvoří podobné nebo identické řešení. Vývojář odpovídá na otázku: Jaké procesy vyvolávají toto konkrétní chování výrobku?

Inženýři takto sice nezískají přesný zdrojový kód, ale díky reverznímu inženýrství jsou schopni pochopit obecnou logiku práce a zopakovat funkčnost.

Kde se reverzní inženýrství používá

Reverzní inženýrství se používá v počítačovém inženýrství, vývoji her, strojírenství, designu, elektronickém inženýrství, vývoji softwaru, chemickém inženýrství a dokonce i v systémové biologii.

Společnosti často využívají reverzní inženýrství starých elektronických součástek, jejichž výroba byla ukončena. Pokud mělo počítačové vybavení funkce, které byly ztraceny v důsledku technologických změn, reverzní inženýrství umožňuje výrobcům tyto vzorce objevit a aktualizovat. Metoda také pomáhá vyvíjet komponenty, které umožňují připojit zastaralá zařízení k novým.

V IT se reverzní inženýrství využívá ke studiu softwaru a hardwaru, jejich prvků a principů fungování.

Objekty mohou být:

  • soubory – abyste zjistili, jak přesně aplikace funguje;
  • části operačního systému – pro nezdokumentované funkce;
  • datový formát – pro získání struktury formátu souboru;
  • síťový protokol – obnovení formátu datových paketů a pořadí výměny dat.

K čemu se používá reverzní inženýrství:

  • vyhledávání a oprava chyb v programech, k jejichž zdrojovému kódu nemají vývojáři přístup;
  • analýza virů před vytvořením antivirového softwaru;
  • zlepšení funkčnosti programu, když není možné kontaktovat předchozího vývojáře (například po zániku vývojářské společnosti);
  • popis herních mechanismů, kdy si vývojář vezme příklad z jiné, již hotové hry, sleduje její vývoj, rozebírá scénář a nabízí svou verzi;
  • učení: pokud vývojář nerozumí některé části svého produktu, může analyzovat produkt někoho jiného a vyvodit závěry o jeho fungování.

Reverzní inženýrství se využívá i k nelegálním účelům – krádeže kódu, obcházení technických prostředků ochrany autorských práv, nekonečné využívání bezplatných verzí programu.

Typy reverzního inženýrství

Existují desítky typů reverzního inženýrství, protože tento proces může rozložit objekt na části různými způsoby – například analýzou na úrovni systému, extrakcí schémat a demontáží produktu.

Principy reverzního inženýrství

Proces zpětného inženýrství se řídí obecnými zásadami:

1. Nezaměňujte hypotézy se závěry. Reverzní inženýrství poskytuje hypotézy. Před vyvozením závěrů musí vývojář aplikaci plně porozumět.

2. Získejte více výkladů. Alternativní interpretace dat může přinést různé výsledky. Čím více informací je k dispozici, tím méně by se měly úsudky reverzních inženýrů lišit.

3. Uvědomte si, že výsledky jsou přibližné. Vývojář například získá 80 % informací díky reverznímu inženýrství. Chcete-li získat zbývajících 20 %, musíte použít přímé metody návrhu, například průzkumy mezi uživateli.

4. Nenechte se překvapit podivnými konstrukcemi. Inženýr nebude schopen reprodukovat úplný a přesný model, protože takový model možná dříve ani neexistoval.

5. Dodržujte jednotný styl. Produkt je vyvíjen pomocí konzistentní strategie, kterou je třeba najít a pochopit.

Fáze reverzního inženýrství na příkladu spustitelného souboru:

1. Spusťte a otestujte spustitelný soubor, seznamte se s aplikací a jejími možnostmi.

2. Analyzujte interakci souboru s vnějším světem: knihovny, procesy, systémová rozhraní API, souborový systém, síťové interakce, fyzické porty atd.

3. Podrobně si prostudujte kód. K tomu slouží překlad binárního kódu do jazyka assembleru, který umožňuje extrahovat struktury, instrukce a volání funkcí.

Výhody

Reverzní inženýrství vám umožňuje vidět to, co již existuje: všechny části, struktury nebo procesy, které by prospěly vývoji. Studium existujících produktů vede k inovacím a k dalším objevům.

Proces také pomáhá najít chyby a zranitelná místa produktu. To je nezbytné pro zajištění bezpečnosti uživatelů. Je lepší, když se problém vyskytne ve fázi výzkumu než ve fázi distribuce.

Kromě toho reverzní inženýrství vede k levnější výrobě – snižují se výrobní náklady.

Nevýhody

Vývojář nemůže vrátit program do zcela původního stavu před kompilací. Kromě toho je obtížné znovu použít kód z rozložené aplikace kvůli obfuskaci kritického a důležitého zdrojového kódu. Někdy vývojáři navíc vkládají do aplikace irelevantní kód, aby zmátli reverzního inženýra a ještě více ztížili proces reverzního inženýrství.

Je reverzní inženýrství legální?

Komerční licenční smlouvy reverzní inženýrství zakazují, ačkoli je tato metoda v souladu se zákony.

V USA existuje mnoho soudních precedentů týkajících se reverzního inženýrství při pokusech o obejití ochrany herních konzolí. Některé společnosti (SEGA, Nintendo) si chtěly koupit přístup ke konzolím a vydávat exkluzivní hry. Vývojářům her se to nelíbilo, protože je jednodušší nekupovat licenci a vydávat hry pro všechny. Proto našli způsob, jak obejít ochranu herních konzolí: hry se staly veřejně dostupnými a kompatibilními s konzolemi.

V 80. a 90. letech 20. století se objevily první soudní spory o reverzní inženýrství a zformovaly se zásady: autorské právo nechrání myšlenky, postupy a operace, k jejich ochraně by se mělo používat patentové právo.

Od té doby je reverzní inženýrství legální, pokud práce vyžaduje tento přístup k pochopení myšlenek a procesů. K tomuto účelu však musí být použita legálně získaná kopie produktu.

Pokud by totiž bylo reverzní inženýrství zakázáno, vlastník produktu a kódu by se stal monopolním hráčem na trhu.

Autor: Krasnynska Maria

Více článků
Nastartuj kariéru v informačních technologiích krok za krokem
Jaká je budoucnost interoperability blockchainů?