Siirry sisältöön
Tekoälyn jäljillä

Selitys

Voiko tekoäly kopioida minkä tahansa sovelluksen? REA ja reverse engineering

Voiko tekoäly kopioida sovelluksen reverse engineeringin avulla? REA antaa agentille työkalut tutkia ohjelmaa ilman lähdekoodia, mutta julkinen näyttö on rajallista, eikä ohjelmistotappajaksi nimittäminen ei ole osoitettu.

Harri Salomaa7 min

Kolme päällekkäistä läpinäkyvää kerrosta, joista keskimmäinen on avattu. Suurennuslasi paljastaa sen sisällä hehkuvat kuutiot ja niitä yhdistävät polut, joista osa hehkuu kullanvärisenä. Ylä- ja alakerros jäävät himmeiksi. Tutkiminen näyttää sen, mitä valaistaan, ei koko ohjelmaa.
Sisällys (8)

Voiko tekoäly tuottaa lähes samanlaisen sovelluksen toiminnallisuuksineen hetkessä, kun sille antaa valmiin ohjelman tutkittavaksi? Sitä REA-työkalun ympärillä oikeasti kysytään. Tarkastelemani julkiset esimerkit näyttävät rajattujen toimintojen uudelleentoteutuksia. Ne eivät vielä osoita, että kokonaisen sovelluksen voisi korvata luotettavasti, ja ero on tämän jutun ydin.

Reverse engineering eli ohjelman toiminnan selvittäminen ilman lähdekoodia on vanha ala: tietoturvatutkijat, yhteensopivuusasiantuntijat ja ohjelmistojen säilyttäjät tekevät sitä käsityönä. Lokakuussa 2026 GitHubissa nousi nopeasti yhdeksi suosituimmista projekteista työkalu nimeltä REA, lyhenne sanoista Reverse Engineer Anything, joka antaa tekoälyagentille tähän työhön valmiit välineet. Otsikoissa sitä on kutsuttu uhaksi suljetun lähdekoodin ohjelmistoille ja jopa ohjelmistojen lopuksi. Tässä jutussa katsotaan, mitä REA tekee, miten se toimii ja mitä siitä on oikeasti osoitettu.

Mikä REA on

REA on avoimen lähdekoodin (MIT-lisenssi) työkalu, joka antaa tekoälyagentille tavan tutkia ohjelmaa, josta ei ole lähdekoodia. Agentti on tässä sama asia kuin jutussa mikä agentti oikeasti on: kielimallin ympärille rakennettu silmukka, joka yrittää, katsoo tuloksen ja korjaa. Esimerkkejä ovat Claude Code, Codex ja Cursor.

REAa voi käyttää agentin kautta tai komentoriviltä. Agentille se näkyy MCP-palvelimena, joka kertoo, mitä REA osaa tehdä.

Kohteita on laaja kirjo: tietokoneelle asennetut ohjelmat, JavaScript- ja Electron-sovellukset, verkkosivut, Android-sovellukset, laiteohjelmistot ja verkkoliikennetallenteet. Tuki vaihtelee alustan ja käytettävissä olevien työkalujen mukaan. Repo näytti 21.10.2026 noin 357 000 tähteä. Eri lähteet antavat eri päiviltä eri lukuja, joten tähtimäärää kannattaa lukea kiinnostuksen mittana eikä laadun.

Miten se toimii

Tärkein asia on se, mitä REA ei ole: uusi tapa purkaa ohjelmia. Purkamiseen on ollut työkaluja vuosikymmeniä, ja ammattilaiset käyttävät niitä edelleen: Ghidra, Hopper ja IDA Pro natiiviohjelmille, JADX Android-sovelluksille. REA käyttää käyttäjän omia asennuksia ja tarjoaa agentille yhden yhtenäisen tavan kutsua niitä. Sekään ei ole täysin uutta: esimerkiksi GhidraMCP tarjoaa kielimalleille Ghidran toimintoja MCP:n kautta. REAn erityisyys on kohteiden kirjo ja se, että löydökset palautetaan perusteineen ja rajoituksineen.

Uudelleenrakennuksen työnkulku on kolmivaiheinen:

  1. Tutki. Agentti pyytää REAa analysoimaan kohteen. Analyysi ajetaan käyttäjän omalla koneella.
  2. Tulkitse. REA palauttaa havaintoja ja niiden perusteet sekä listan asioista, joita ei saatu selville. Agentti tekee niistä päätelmiä.
  3. Rakenna. Agentti kirjoittaa uuden toteutuksen ja testaa sen alkuperäistä vasten.

Vaiheiden 2 ja 3 välissä on se, mistä koko kysymys riippuu. Aineisto ei takaa oikeaa tulkintaa. REAn oma vastuuvapauslauseke varoittaa, että dekompilointi, rekonstruointi, heuristiikat ja tekoälyanalyysi voivat olla puutteellisia tai virheellisiä. Funktioiden nimet, kutsusuhteet ja pseudokoodi antavat vihjeitä siitä, mitä koodi voi tehdä, mutta eivät yksinään osoita, miten käyttäjälle näkyvä ominaisuus toimii. Siksi tärkeät päätelmät pitää tarkistaa alkuperäisistä havainnoista ja testeillä.

Neljä porrasta, joita otsikot hyppäävät yli

Ohjelman tutkiminen, sen toiminnan ymmärtäminen, uuden version tekeminen ja toimivan tuotteen ylläpito ovat eri saavutuksia. Tässä tarkastelluissa esimerkeissä julkinen näyttö on pääosin ensimmäisillä portailla.

PorrasKysymysMitä näytöstä tiedetään
PääsyMitä ohjelmasta saadaan näkyviin?Kohteita on paljon, mutta tuki vaihtelee.
YmmärtäminenPäätelläänkö toiminta oikein?Esimerkkejä on, mutta tarkastelluista lähteistä ei löytynyt järjestelmällistä arviointia.
UudelleentoteutusToimiiko uusi versio myös muissa kuin esittelyyn valituissa tapauksissa?Vain rajattuja ominaisuuksia on näytetty.
TuoteTäyttääkö se vaatimukset ja pysyykö se kunnossa?Tarkastelluissa esimerkeissä ei näyttöä ylläpidetystä korvaavasta tuotteesta.

Mitä esimerkit osoittavat

Dinosaurus-peli. DataCampin opaskirjoituksessa agentti selvitti, miten Chromen dinosaurus-peli toimii, ja teki sen perusteella oman pelin uusilla hahmoilla. Suora chrome://dino-sivun tutkiminen ei onnistunut, joten agentti poimi pelin JavaScriptin selaimen asennuspaketista ja antoi sen REAlle. Kaksi rajausta: tämä on JavaScriptin analyysiä eikä käännetyn natiiviohjelman purkua, ja pelin lähdekoodi on julkisesti Chromiumin lähdepuussa (TypeScriptinä). Koe näyttää, että agentti osaa etsiä resursseja ja analysoida niistä poimittua koodia. Se ei kerro, miten hyvin sama työnkulku selvittäisi tuntemattoman, suljetun algoritmin.

Macin Preview. MindStudion kuvaamassa epämuodollisessa vertailussa agentti rakensi Preview-sovellusta muistuttavan ohjelman REAn kanssa ja ilman sitä. REAn kanssa tulos oli lähellä alkuperäistä, ja ilman REAa agentti sai myös toimivan version ja valmistui nopeammin. Molemmilla tavoilla saatiin toteutettua useita näkyviä toimintoja. Vertailusta ei kuitenkaan selviä arviointikriteerit, toistot eikä kattavuus, eikä se osoita, kumpi tapa tuottaa kattavamman tai luotettavamman sovelluksen. Kirjoituksessa ei raportoida tiedostoyhteensopivuuden eikä reunatapausten testejä.

REAn omat mittaukset. Projekti on julkaissut tehokkuusmittauksia, ja ne vastaavat kapeampaan kysymykseen: kuinka tehokkaasti agentti saa analyysitulokset käyttöönsä. Linkki osoittaa tiettyyn commitiin, koska sivu elää nopeasti ja sisältää runsaasti jatkotutkimuksia. Mittaukset arvioivat tiettyjä analyysityönkulkuja ja optimointeja, esimerkiksi tiiviiden vastausten palauttamista täysien sijaan. Ne eivät testaa sitä, tuottaako REA parempia korvaavia sovelluksia kuin agentti ilman sitä. Vastausten koko pieneni rajusti, mutta kokonaisaika ja mallin tokenkulutus vaihtelivat: osa tuloksista oli parempia, osa heikompia, ja useat ovat yksittäisiä ajoja. Projekti itse varoittaa yleistämästä niitä. Sivu dokumentoi skriptit ja syötteet, mutta tulosten taustalla olevat raakatallenteet ja tekstit säilytetään yksityisessä laboratoriossa, joten osaa väitteistä ei voi tarkistaa pelkältä sivulta. Aineisto on lisäksi projektin oma. Sekin kertoo jotain: projekti julkaisee myös tuloksia, jotka eivät puhu sen puolesta.

Nämä esimerkit jättävät yhden kysymyksen auki: mitä REA tuo tavalliseen koodausagenttiin verrattuna? Tässä tarkastellut julkiset vertailut eivät osoita johdonmukaista etua REAlle.

Miksi sitä sanotaan ohjelmistotappajaksi

Väitteellä on järkeväkin peruste. Osa yrityksistä on rakentanut suojansa sen varaan, että valmiin ohjelman sisälle on vaikea nähdä. Jos tutkiminen helpottuu, tuo suoja ohenee. Vanhojen menetelmien yhdistäminen voi myös olla merkittävä uudistus, vaikka menetelmät itse ovat vanhoja, jos se laskee kustannuksia tai tuo työkalun uudelle käyttäjäryhmälle.

Väitteen kanssa on silti kolme ongelmaa:

  • Tutkiminen ja korvaaminen ovat eri asioita. Yhden ominaisuuden selvittäminen ei tee luotettavan vaihtoehdon rakentamisesta tai asiakkaan siirtämisestä halpaa. Kolme eri kysymystä: halpeneeko ominaisuuden selvittäminen, halpeneeko luotettavan vaihtoehdon rakentaminen, halpeneeko asiakkaan siirtyminen? Tarkastelluista lähteistä näkyy korkeintaan ensimmäinen.
  • Työ ei ole ilmaista. Avoin lähdekoodi ei tee kokonaisuutta halvaksi: mallin käyttö, kaupalliset analyysityökalut, laskenta ja ihmisen tarkistus maksavat.
  • Palvelinpuoli jää näkymättömiin. REA tutkii sitä, mikä on päätynyt käyttäjän koneelle tai selaimeen. Koodi, joka pyörii vain palveluntarjoajan palvelimella, ei tule sen mukana. Tämä on oma päätelmäni lähteiden kuvauksesta. Se rajaa sitä, mitä REA voi paljastaa pilvipalveluista: se voi tutkia asiakaspuolen koodia ja havaittavaa toimintaa, mutta ei suoraan palauttaa toteutusta, joka pysyy palveluntarjoajan palvelimilla.

Tarkastellut esimerkit eivät osoita, kuinka paljon REA alentaa luotettavan korvaajan rakentamisen kustannuksia. Se voi silti madaltaa kynnystä tutkia koodia, joka on jaettu asiakkaalle, ja se heikentää ajatusta, että pelkkä vaikeaselkoisuus suojaa.

Oikeus ja käyttö

Tämä osio ei ole oikeudellista neuvontaa.

Toimintaa ja suojattua ilmaisua pitää erottaa toisistaan. EU:n tuomioistuin on SAS Institute -ratkaisussa (C-406/10) todennut, ettei ohjelman toiminnallisuus sellaisenaan ole ohjelmistotekijänoikeuden suojaama ilmaisumuoto. Ratkaisu ei silti anna yleislupaa kopioida koodia, ohjetekstejä tai muuta suojattua aineistoa. Ominaisuuden toteuttaminen uudelleen omalla koodilla on eri asia kuin toisen koodin, ohjetekstien tai kuvien kopioiminen.

Lisenssiehdot eivät ole ainoa ratkaisija, koska osa ohjelmien tutkimiseen liittyvistä oikeuksista on lakisääteisiä. Tarkat rajat riippuvat maasta ja tilanteesta. Jos aiot tutkia jonkun ohjelmaa tai toteuttaa sen uudelleen kaupallisesti, hanki ensin tapauskohtaista neuvontaa.

REAn tuki- ja käyttölinjaus rajaa käytön laillisiin tarkoituksiin: tutkimukseen, opetukseen, yhteentoimivuuteen ja ohjelmistojen säilyttämiseen, ja kohteeksi ohjelmiin, jotka omistat tai joiden tutkimiseen sinulla on lupa. Tämä on projektin oma linjaus. Projektin vastuuvapauslauseke sanoo erikseen, ettei se lisää MIT-lisenssiin uusia tekijänoikeudellisia ehtoja.

Kaksi käytännön huomiota:

  • REA ei ole hiekkalaatikko. Projektin turvallisuusohje kertoo, että tuntemattoman ohjelman avaaminen siirtää analyysin valitulle paikalliselle työkalulle käyttäjän oikeuksilla. Epäilyttävää ohjelmaa ei pidä tutkia omalla työkoneella ilman erillistä eristystä.
  • Missä analyysituloksia käsitellään. Paikallinen suoritus ei yksin kerro, minne tulokset menevät. Jos käytät pilvimallia, agentin mallille lähettämät tulokset siirtyvät mallipalveluun. Tarkista tietojenkäsittelyehdot ennen kuin syötät mitään, mitä et saa jakaa.

Mitä tästä kannattaa ottaa mukaan

Jos hankit tai rakennat ohjelmistoa: älä oleta, että asiakkaille jaettu käännetty koodi pysyy salaisena. Mieti, kuinka paljon tuotteen arvosta riippuu datasta, palvelusta, tuesta ja luottamuksesta, ja kuinka helposti kilpailija voisi toistaa ne.

Jos tutkit ohjelmistoja: mahdollisia käyttökohteita ovat vanhan ohjelman yhteensopivuuden korjaaminen, toimittajan väitteiden tarkistaminen ja ohjelmistojen säilyttäminen, mutta tarkasti dokumentoituja onnistumisia on vielä vähän. Tarkista agentin päätelmät aina alkuperäisistä havainnoista ja testeillä.

Jos haluat vain ymmärtää uutisen: REA on esimerkki siitä, mitä tapahtuu, kun agentti saa käyttöönsä työkaluja, joita ennen käytti vain asiantuntija. Samaa kuviota käsitellään jutussa vibe-koodaus ja avustettu ohjelmointi. Analyysityökalut ovat vanhoja, mutta niiden käyttö agentin ohjaamassa työnkulussa on uudempi kehitys, ja ihmisen rooli voi siirtyä tekijästä ohjaajaksi ja tarkastajaksi. Kuinka paljon työtä tämä säästää ja kuinka paljon asiantuntijan valvontaa se yhä vaatii, on avoin kysymys.

Mihin tämä jättää

REA antaa agenteille jäsennellyn pääsyn ohjelmistojen tutkimistyökaluihin ja voi helpottaa rajattujen ominaisuuksien selvittämistä. Arvioi väitteitä siitä kolmella mittarilla: kuinka monta havaintoa voi todentaa, kuinka paljon ihmisen työtä säästyy ja kuinka laajasti uudelleentoteutus kattaa alkuperäisen.

Lähteet

agentitMCPavoin lähdekoodiohjelmistottekijänoikeus

Harri Salomaa · 40 vuotta ohjelmistoalalla, siitä 20 Yhdysvalloissa ja Saksassa: prosessidatan keruusta ja verkkodatan analysoinnista immersiiviseen laskentaan ja viimeksi tekoälyyn.

Jaa tämä juttu