Otsing sellest blogist

UUS!!!

Rabastuvad metsad

Blogi, mis räägib kõigest, mis on Leonhardile oluline ja/või huvitav. Kommenteerige, tellige, lugege, nautige ja õppige. Rabastuvad metsad  ...

esmaspäev, 1. veebruar 2021

Pöördprojekteerimine

Pöördprojekteerimine:
Pöördprojekteerimine (inglise keeles reverse engineering) on inimese loodud objekti uurimine eesmärgiga saada aru selle toimimispõhimõtetest ja ülesehitusest kas algse objekti muutmiseks või sellega sarnaselt toimiva uue objekti loomiseks.
Pöördprojekteerimise teised tähendused:
Teises tähenduses on pöördprojekteerimine tarkvaraarendusega seotud sõna. 

Pöördprojekteerimine on tarkvara masinkoodi või muu käitatava koodi analüüsimine selle tööpõhimõtete või sisemise loogika tuvastamiseks. Pöördprojekteerimist kasutatakse vana tarkvara paikamiseks ja ühilduvuse loomiseks, pahavara analüüsimiseks või kuritahtliku koodi leidmiseks, kuid ka koopiakaitse vältimiseks või tarkvara turvaaukude leidmiseks.

Tööriistad


Disassembler

Disassembler on arvutiprogramm, mis tõlgib masinkoodi assemblerkeelde, olles seega assembleri vastand. Korrektsele masinkoodile vastab alati vähemalt üks assemblerkeeles kood, seega defektideta disassembleriga peaks saama analüüsida kõiki programme, kuid varieeruva käsupikkusega käsustikel võib kavalalt konstrureeritud koodi puhul olla keeruline, kui leidub hüppeid käsu 'keskele'.
Disassembler on tõhus pisikese koodijupi väga täpseks edasiandmiseks, kuid suurema tarkvaraprojekti analüüsimine vaid disassembleri abil on tülikas.

Dekompilaator

Dekompilaator on programm, mis teisendab kompileeritud koodi kõrgtaseme lähtekoodiks, olles seega kompilaatori vastand. Selline kood on palju lihtsamini loetav, kuid dekompilaatori ülesanne on disassembleri omast oluliselt keerulisem, sest et lähtekoodi ja masinkoodi vahel puudub üksühene seos. Õige väljund on vähem defineeritud — mida idiomaatilisemat koodi see väljastab, seda kergemini loetav see on.
Kõige populaarsem masinkoodi dekompilaator elukutseliste pöördprojekteerijate seas on IDA Pro, mis on tasuline tarkvara.
2019. aastal avaldas NSA oma dekompilaatori Ghidra ning selle lähtekoodi.

Silur

Silur on arendustööriist, mida kasutatakse programmi samm- või osahaaval käitamiseks ning selle oleku (näiteks mälu ja registrite) jälgimiseks, mille abil saab uuritava programmi tööd analüüsida dünaamiliselt, mis teeb koodi huvitava osa leidmise lihtsamaks ning enamasti võimaldab koodi ka käitamise ajal disassembleerida ning muuta. Dünaamiline analüüs on kasulik tehnika eriti näiteks siis, kui programm dekrüpteerib ennast mälus.

Rakendused


Pahavara analüüsimine

Pahavara analüüsitakse, et tuvastada selle funktsionaalsus, päritolu, ohtlikkus ning seotud juhtserverid. Eduka analüüsi tulemusena võib olla võimalik tarkvara kahjutuks teha, näiteks on võimalus, et autoriteedid võtavad juhtserverid või nende domeeniaadressid enda kontrolli alla. Ka on mõnikord võimalik sel viisil tuvastada pahavara autor.

Koopiakaitse vältimine

Koopiakaitse vältimine e. kräkkimine on kommertsvara analüüsimine või muutmine litsensipiirangute vältimiseks, näiteks piraattarkvara levitamise eesmärgil.

Turvaaukude otsimine

Pöördprojekteeritud tarkvarast saab otsida turvaauke, kas äriloogikast või mäluhaldusest — viimasest kõige levinud ärakasutatav tarkvaraviga on puhvri ületäitumine. Turvaauke otsivad nii "mustakaabulised" kui ka "valgekaabulisedhäkkerid — esimesed nende ära kasutamiseks või müümiseks ja teised, et teavitada arendajat turvaaugust, et too selle parandaks. Suuremates tarkvaraprojektides on sageli kasutusel puugipreemiajaht, kus vea leidjat premeeritakse tunnustuse ja rahalise kompensatsiooniga.

Pöördprojekteerimise tõkestamine


Sogastamine

Tarkvara sogastamine on selle muutmine nii, et tulemuse mõistmine on inimeste jaoks keeruline. Sogastamistehnikad põhinevad käitatava koodi teisendamises nii, et tulemus on semantiliselt sama, kuid raskemini loetav.

Silumisvastased meetodid

Et vältida programmi töö dünaamilist analüüsi siluri abil, võivad programmid vältida programmi olulise osa käitamisest, kui tuvastatakse, et silur on küljes. Meetodid selle tuvastamiseks põhinevad kas otseselt käituskeskkonna silumisliideselt küsimisel, programmi koodi muudatuste tuvastamisel (katkestuspunktid on sageli teostatud programmi ajutise muutmisega) või silumisest põhjustatud keskkonnamuudatuste tuvastamisel.

Legaalsus


Euroopa Liidus

Euroopa Liidus sätestab pöördprojekteerimist direktiiv 2009/24/EÜ.
Selle direktiivi kohaselt on tarkvara autoriõiguse omanikul ainuõigus lubada tarkvara kopeerimist, tõlkimist, muutmist või avaldamist. Erandina on lubatud muuta tarkvara vigade parandamiseks ning dekompileerida, kui see on vajalik ühilduvuse tagamiseks muu seadme või tarkvaraga, kuid sellist dekompileerimise tulemust ei tohi kasutada muul eesmärgil.

Ameerika Ühendriikides

Ameerika Ühendriikides on pöördprojekteerimine ühilduse tagamiseks lubatud, kuid kohtupraktikas võivad lepingutingimused seda keelata, mis juhul pöördprojekteerimist loetakse lepingurikkumiseks.
(https://et.m.wikipedia.org/wiki/P%C3%B6%C3%B6rdprojekteerimine_(tarkvara))