Insenerid peavad mõnikord toote analüüsimiseks mõtlema vastupidiselt. Näiteks mehaanikainsener saab teha järeldusi toote tootmise kohta selle disaini ja füüsikaliste omaduste põhjal. Nad võivad isegi sama toodet toota, kui neil on sellest põhjalik arusaam.
Samuti saate pöördprojekteerimist võrrelda matemaatiliste võrrandite tõestustega. Niisiis, kuidas pöördprojekteerimist kasutatakse?
Mis on pöördprojekteerimine?
Pöördprojekteerimine on süsteemi analüüsimise protsess selle reprodutseerimise või täiustamise eesmärgil. Kui vaatate pöördprojekteerimise töövaldkondi, näete, et saate seda kasutada paljudel erinevatel eesmärkidel. Kui vaadata seda küberturvalisuse vaatenurgast, on pöördprojekteerimise meetoditega võimalik teha järgmisi toiminguid:
- Mitteavatud lähtekoodiga tarkvara allikaanalüüs
- Haavatavuse analüüs
- Pahavara analüüs
- Pragunemine ja lappimine
Näete pöördprojekteerimist, mida tänapäeval kasutatakse isegi arvutimängudes. Näiteks loovad arendajad sageli tarkvara modifikatsioone, kasutades pöördprojekteerimise meetodeid.
Pöördprojekteerimise valdkonnas on kaks erinevat analüüsimeetodit: staatiline ja dünaamiline. Te teete staatilise analüüsi, kui analüüsite programmi ilma seda tegelikult käivitamata. Dünaamilise analüüsi meetod seevastu nõuab, et käivitaksite programmi, et jälgida selle käitumist ja andmeid, mida see kasutab.
Kuid enne pöördprojekteerimise analüüsi läbiviimist peate teadma mõnda olulist terminit kuidas arvuti arhitektuur töötab.
Arvutiarhitektuuri peamised osad
Pöördprojekteerimine on praktiliselt võimatu, kui te ei mõista arvuti arhitektuuri. Peate uurima nelja põhiosa:
- Sisend: meetodite kogum andmete sisestamiseks.
- Protsessor: CPU töötleb sissetulevaid andmeid ja edastab need omanikele. See on keskprotsessor.
- Mälu: ruum, mis töötlemise ajal andmeid ajutiselt hoiab.
- Väljund: tulemus, mida lõppkasutaja näeb.
Saate kõiki neid põhiprobleeme meeles pidada näite abil, näiteks kui vajutate klaviatuuril tähte A. Kui vajutate seda, toimub sisestussündmus. Pärast seda etappi töötleb protsessor andmeid ja kasutab nende salvestamiseks väikest mäluruumi. Lõpuks näete oma ekraanil tähte A, mis lõpetab protsessi väljundiga.
Sukelduge protsessori sügavustesse
Kui soovite tõesti saada pöördprojekteerimise eksperdiks ja sukelduda sellesse teemasse sügavale, peate omama üksikasjalikke teadmisi riistvara, madala taseme keelte ja eriti protsessori kohta. Peamised teemad, mida peate protsessori kohta teadma, on järgmised:
- Juhtseade: see vastutab andmete töötlemise eest protsessoris ja nende edastamise eest asjakohastele väljadele. Võite mõelda sellele seadmele kui marsruudi juhtimismehhanismile.
- ALU: See tähistab aritmeetilise loogika ühikut. Siin toimuvad mõned aritmeetilised ja loogilised toimingud. Kui süvenete matemaatikasse, näete, et neli põhitehtet on sisuliselt liitmise variatsioonid. Seega põhineb ALU liitmisel. Näiteks kahe lahutamine kolmest on sama, mis miinus kahe liitmine kolmele.
- Registrid: need on protsessoris olevad alad, mis hoiavad töödeldud andmeid. Registreid on erinevat tüüpi, sarnaselt programmeerimiskeeles erinevat tüüpi muutujatele. Register vastutab talle määratud andmete tüübi ja atribuutide säilitamise eest.
- Signaalid: Kui soovite, et protsessor teeks korraga palju erinevaid toiminguid, on vajalik nende organiseerimise meetod. Elemente, mis seda teevad, nimetatakse signaalideks. Iga tehing toimib vastavalt signaalidele, mis tagavad, et see ei sega teist protsessi.
- Buss: tee, mida andmed kasutavad ühest ühikust teise liikumiseks. Pange tähele, kuidas nimi viitab transpordile.
Mõisted, mida pöördprojekteerimises sageli kuulete
Mõistmine, kuidas protsessor andmeid töötleb ja mällu salvestab, võib lisaks registrite kontseptsioonile olla pöördprojekteerimisel väga kasulik. Eelkõige saate mälu mõiste paremaks mõistmiseks kasutada allolevat diagrammi:
Lõpuks, pöördprojekteerimise analüüsi jaoks peate teadma mõningaid registrite põhimõisteid. Need on üks teemadest, millele keskendute kõige rohkem. Siin on mõned selgitused andmete, näpunäidete ja registrite registrite kohta, mis on teile kõige kokkuvõtlikumal viisil kasulikud.
- 1. EAX: tähistab akuregistrit. Tavaliselt salvestab see siin aritmeetiliste toimingute kategooriasse kuuluvaid andmeid.
- 2. EBX: tähistab põhiregistrit. See mängib rolli kaudses adresseerimises.
- 3. EDX: tähistab andmeregistrit. EDX aitab teisi registreid.
- 4. EIP: tähistab juhiste osutit. Hoiab käitatava domeeni aadressi.
- 5. ESP: Hoiab baasaadressi.
- 6. ESI: sisaldab lähteindeksi teavet.
- 7. EDI: säilitab sihtkoha indeksi teabe.
Nende nüansside mõistmiseks peaksite neid kõiki eraldi uurima. Kuid kui vaatate põhitõdesid ja proovite mõista äriloogikat, olenemata sellest, millise protsessori arhitektuuriga te töötate, on pöördprojekteerimise koodianalüüs üsna lihtne.
Pöördprojekteerimine algab sageli masinkoodiga. Võite paljudest ülaltoodud terminitest aru saada, kui olete kokkupanemisega tuttav või valdate seda 32-bitised või 64-bitised protsessori arhitektuurid. Kui soovite kokkupanekut maast madalast õppida, on see pöördprojekteerimisel äärmiselt kasulik.
Mida sa selle kõigega peale hakkad?
Kui teil on head teadmised pöördprojekteerimisest, saate koodianalüüsi teha olenemata sellest, millise operatsioonisüsteemi või protsessori arhitektuuriga töötate. Näiteks on võimalik leida paljude programmide või arvutimängude krakitud versioone. See on täiesti ebaseaduslik meetod.
Kui aga kavatsete olla eetilise küberjulgeoleku professionaal, peate kasutama pöördprojekte, et mõista, miks neid murtud programme murtakse. Kui soovite pöördprojekteerimises edasi liikuda või olete alles alustamas, oleks hea valik õppida riistvara ja masinkoodi seoseid.