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.
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 "valgekaabulised" hä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))