Skip to content

Reverse engineering - takaisinmallinnus

Kuvauksen kirjoitti: Hannu Kujanpää / M0374

Lyhyt kuvaus käsitteestä tai aiheesta

Reverse engineering, eli takaisinmallinnus tarkoittaa ohjelmiston, laitteen tai tietojärjestelmän toiminnallisuuden selvittämistä. Käytännössä kerätään mahdollisimman paljon tietoa tuotteesta etukäteen, mahdollisesti puretaan fyysinen laite ja rakennetaan samanlainen laite/ohjelmisto saadun tiedon perusteella. Takaisinmallinnusta voidaan käyttää myös ohjelmistojen yhteensopivuusongelmien ratkaisuun.

Reverse engineering kuvaa käsitteenä hyvin prosessia, sillä tarkoituksena on yrittää mennä tuotantoprosessia "taaksepäin"; aloitetaan valmiista tuotteesta ja yritetään askel askeleelta mennä suunnittelu- ja valmistusprosessia taaksepäin.

Ohjelmistotuotannon näkökulmasta takaisinmallinnuksessa käytetään yleensä disassembleria, joka lukee käännetyn ohjelman binääriä, mutta ei ymmärrä onko luettu data itse suoritustiedoston ohjeita vai muuta dataa. Suoritustiedoston ohjeiden ja ohjelman datan erotteluun käytetään debuggeria, jolloin voidaan keskittyä vain itse suoritustiedoston binäärin kääntämiseen tekstimuotoiseksi.

Muuta aiheeseen liittyvää

Jotkut yritykset joutuvat itse tekemään takaisinmallinnusta omista ohjelmistoistaan, sillä heillä saattaa olla jopa kymmeniä vuosia vanhoja legacy ohjelmistoja, joista ei välttämättä ole lähdekoodia enää saatavilla.

Monesti käsitettä kuullaan käytettävän tietotekniikkaan liittyvissä asioissa, mutta yksi tunnetuimmista takaisinmallinnuksista on toisen maailmansodan pommikone, Tupolev Tu-4, joka on takaisinmallinnettu Boeing B-29 Superfortressista.

Mitä ohjelmiston suunnitteluvaiheessa kannattaisi ottaa huomioon tietoturvan ja mahdollisen takaisinmallinnuksen kannalta? Tarviiko huomioida mitään?

Linkit ulkopuolisiin lähteisiin

Avainsanat harjoitustehtävän repositoriossa