Ohjelmatiedostojen takaisinmallintamisen tekniikat
Bonifer, Jaakko (2023)
Bonifer, Jaakko
2023
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2023-12-15
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-2023121310813
https://urn.fi/URN:NBN:fi:tuni-2023121310813
Tiivistelmä
Vaatimukset takaisinmallintamisen tekniikoiden moninaisuudelle ja tehokkuudelle ovat kasvaneet viime vuosikymmeninä kyberhyökkäysten ja päivittäisen teknologian yleistymisen myötä. Takaisinmallintaminen mahdollistaa ohjelmistojen, kuten haittaohjelmien tai suljetun lähdekoodin työkalujen, toimintaperiaatteiden tarkastelun ja muokkaamisen. Tämä voi olla hyödyllistä esimerkiksi kyberturvallisuustutkimuksen, ohjelmistojen säästämisen tai kehittäjän asettamien rajoitteiden ohittamisen kannalta. Tällainen rajoite voi esimerkiksi tarkistaa, onko käyttäjä maksanut kehittäjälle ohjelmiston käyttämisestä.
Työn tavoitteena on selvittää, mihin tekniikoihin yleisimmät takaisinmallintamisen työkalut perustuvat, mitkä ovat merkittävimpiä haasteita takaisinmallintamisprosessissa ja millaisia ongelmia voidaan ratkaista takaisinmallintamisen avulla. Lisäksi pohditaan takaisinmallintamisen yhteiskunnallista merkitystä, soveltuvuutta sekä eettisyyttä kaupallisten ohjelmistojen näkökulmasta.
Takaisinmallintamisen tekniikoiden ja haasteiden tarkastelu suoritetaan kirjallisuuskatsauksena. Tekniikoiden soveltuvuutta ja haasteita havainnollistetaan lisäksi esimerkein Ghidra-takaisinmallintamisohjelmiston ja esimerkkiohjelman avulla. Takaisinmallintamisen tekniikoiden tarkastelu keskittyy yleisimpien tekniikoiden toimintaperiaatteisiin ja sovelluskohteisiin. Takaisinmallintamisen haasteiden tarkastelu keskittyy konekielen tulkittavuuteen sekä yleisimmin hyödynnettyjen obfuskointitekniikoiden toimintaperiaatteisiin. Takaisinmallintamisen eettisyyttä pohditaan tekniikan mahdollistaman ohjelmistopiratismin näkökulmasta.
Tutkielma osoittaa yleisimpien analyysitekniikoiden pohjautuvan ohjelmatiedoston staattiseen ja dynaamiseen analyysiin. Tutkielmassa osoitetaan konekielen tulkitsemisen ja obfuskoinnin asettavan keskeisimmät haasteet takaisinmallintamisprosessissa. Staattisen analyysin tekniikoiden havaitaan olevan yleisimpiä niiden yksinkertaisuuden, helppokäyttöisyyden ja turvallisuuden vuoksi. Dynaamiseen analyysiin pohjautuvista tekniikoista yleisimpiä ovat hybridianalyysi, symbolinen suoritus ja tahra-analyysi. Hybridianalyysin huomataan olevan hyödynnetty erityisesti koneoppimisalgoritmien yhteydessä. Tahra-analyysin ja symbolisen suorituksen tunnistetaan olevan hyödyllisiä analyysityökaluja, jotka kuitenkin vaativat rinnalleen muita analyysitekniikoita soveltuakseen niille haastavampiin tilanteisiin.
Työn tavoitteena on selvittää, mihin tekniikoihin yleisimmät takaisinmallintamisen työkalut perustuvat, mitkä ovat merkittävimpiä haasteita takaisinmallintamisprosessissa ja millaisia ongelmia voidaan ratkaista takaisinmallintamisen avulla. Lisäksi pohditaan takaisinmallintamisen yhteiskunnallista merkitystä, soveltuvuutta sekä eettisyyttä kaupallisten ohjelmistojen näkökulmasta.
Takaisinmallintamisen tekniikoiden ja haasteiden tarkastelu suoritetaan kirjallisuuskatsauksena. Tekniikoiden soveltuvuutta ja haasteita havainnollistetaan lisäksi esimerkein Ghidra-takaisinmallintamisohjelmiston ja esimerkkiohjelman avulla. Takaisinmallintamisen tekniikoiden tarkastelu keskittyy yleisimpien tekniikoiden toimintaperiaatteisiin ja sovelluskohteisiin. Takaisinmallintamisen haasteiden tarkastelu keskittyy konekielen tulkittavuuteen sekä yleisimmin hyödynnettyjen obfuskointitekniikoiden toimintaperiaatteisiin. Takaisinmallintamisen eettisyyttä pohditaan tekniikan mahdollistaman ohjelmistopiratismin näkökulmasta.
Tutkielma osoittaa yleisimpien analyysitekniikoiden pohjautuvan ohjelmatiedoston staattiseen ja dynaamiseen analyysiin. Tutkielmassa osoitetaan konekielen tulkitsemisen ja obfuskoinnin asettavan keskeisimmät haasteet takaisinmallintamisprosessissa. Staattisen analyysin tekniikoiden havaitaan olevan yleisimpiä niiden yksinkertaisuuden, helppokäyttöisyyden ja turvallisuuden vuoksi. Dynaamiseen analyysiin pohjautuvista tekniikoista yleisimpiä ovat hybridianalyysi, symbolinen suoritus ja tahra-analyysi. Hybridianalyysin huomataan olevan hyödynnetty erityisesti koneoppimisalgoritmien yhteydessä. Tahra-analyysin ja symbolisen suorituksen tunnistetaan olevan hyödyllisiä analyysityökaluja, jotka kuitenkin vaativat rinnalleen muita analyysitekniikoita soveltuakseen niille haastavampiin tilanteisiin.
Kokoelmat
- Kandidaatintutkielmat [8683]