Insinöörit joutuvat joskus ajattelemaan päinvastaista analysoidakseen tuotetta. Esimerkiksi koneinsinööri voi tehdä johtopäätöksiä tuotteen tuotannosta sen suunnittelun ja fysikaalisten ominaisuuksien perusteella. He voivat jopa pystyä valmistamaan saman tuotteen, jos heillä on perusteellinen käsitys siitä.
Voit myös verrata käänteistä suunnittelua matemaattisten yhtälöiden todisteisiin. Joten miten käänteistä suunnittelua käytetään?
Mitä on käänteinen suunnittelu?
Käänteinen suunnittelu on prosessi, jossa analysoidaan järjestelmää sen toistamiseksi tai parantamiseksi. Jos tarkastelet käänteisen suunnittelun työalueita, voit nähdä, että voit käyttää sitä moniin eri tarkoituksiin. Jos katsot asiaa kyberturvallisuuden näkökulmasta, on mahdollista suorittaa seuraavat toiminnot käänteissuunnittelumenetelmillä:
- Ei-avoimen lähdekoodin ohjelmistojen lähdeanalyysi
- Haavoittuvuusanalyysi
- Haittaohjelmaanalyysi
- Halkeilu ja paikkaus
Voit nähdä käänteistä suunnittelua, jota käytetään jopa tietokonepeleissä nykyään. Esimerkiksi kehittäjät luovat usein ohjelmistomoduokkia käyttämällä käänteissuunnittelumenetelmiä.
Käänteisen suunnittelun alalla on olemassa kaksi erilaista analyysimenetelmää: staattinen ja dynaaminen. Suoritat staattisen analyysin, kun analysoit ohjelmaa suorittamatta sitä. Dynaaminen analyysimenetelmä puolestaan edellyttää, että suoritat ohjelman tarkkailemaan sen toimintaa ja sen käyttämiä tietoja.
Mutta ennen kuin teet analyysin käänteissuunnittelua varten, sinun on tiedettävä joitain tärkeitä termejä miten tietokonearkkitehtuuri toimii.
Tietokonearkkitehtuurin tärkeimmät osat
Käänteinen suunnittelu on käytännössä mahdotonta, ellet ymmärrä tietokonearkkitehtuuria. Sinun on opittava neljä pääosaa:
- Syöte: joukko tapoja syöttää tietoja.
- prosessori: CPU käsittelee saapuvat tiedot ja välittää ne omistajilleen. Se on keskusyksikkö.
- Muisti: Tila, jossa tietoja tilapäisesti säilytetään käsittelyn aikana.
- Lähtö: Loppukäyttäjän näkemä tulos.
Voit pitää kaikki nämä pääasiat mielessäsi esimerkin avulla, kuten kun painat näppäimistön A-kirjainta. Kun painat sitä, tapahtuu syöttötapahtuma. Tämän vaiheen jälkeen prosessori käsittelee tiedot ja käyttää pienen tilan muistissa sen tallentamiseen. Lopuksi näet A-kirjaimen näytölläsi, jolloin prosessi päättyy tulostukseen.
Sukella CPU: n syvyyksiin
Jos haluat todella tulla käänteisen suunnittelun asiantuntijaksi ja sukeltaa syvälle tähän aiheeseen, sinulla on oltava yksityiskohtaiset tiedot laitteistosta, matalan tason kielistä ja erityisesti suorittimesta. Tärkeimmät aiheet, jotka sinun tulee tietää prosessorista, ovat:
- Ohjausyksikkö: Tämä vastaa tietojen käsittelystä CPU: ssa ja niiden siirtämisestä asianmukaisiin kenttiin. Voit ajatella tätä yksikköä reitityksen ohjausmekanismina.
- ALU: Tämä tarkoittaa aritmeettista logiikkayksikköä. Tässä tapahtuu joitain aritmeettisia ja loogisia operaatioita. Jos syvennät matematiikkaa, huomaat, että neljä perusoperaatiota ovat pohjimmiltaan yhteenlaskujen muunnelmia. Joten ALU perustuu aggregointiin. Esimerkiksi kahden vähentäminen kolmesta on sama kuin miinus kahden lisääminen kolmeen.
- Rekisterit: Nämä ovat prosessorin sisällä olevia alueita, jotka sisältävät käsitellyt tiedot. Rekisterejä on erilaisia, aivan kuten ohjelmointikielessä on erityyppisiä muuttujia. Rekisteri vastaa sille osoitettujen tietojen tyypin ja ominaisuuksien ylläpitämisestä.
- Signaalit: Jos haluat CPU: n suorittavan useita eri toimintoja samanaikaisesti, jokin menetelmä niiden järjestämiseen on välttämätön. Elementtejä, jotka tekevät tämän, kutsutaan signaaleiksi. Jokainen tapahtuma toimii signaalien mukaan, joka varmistaa, että se ei häiritse toista prosessia.
- Bussi: Polku, jolla tiedot siirtyvät yksiköstä toiseen. Huomaa, kuinka nimi viittaa kuljetukseen.
Käsitteitä, joita kuulet usein käänteistekniikassa
Ymmärtäminen, kuinka CPU käsittelee dataa ja tallentaa sen muistiin, voi olla rekistereiden käsitteen ohella erittäin hyödyllistä käänteissuunnittelussa. Erityisesti voit käyttää alla olevaa kaaviota ymmärtääksesi paremmin muistin käsitteen:
Lopuksi käänteisen suunnittelun analyysiä varten sinun on tiedettävä joitain rekistereiden peruskäsitteitä. Ne ovat yksi niistä aiheista, joihin keskityt eniten. Seuraavassa on joitain tietoja, osoittimia ja hakemistorekistereitä koskevia selityksiä, joista on sinulle hyötyä tiiviimmällä tavalla:
- 1. EAX: tarkoittaa akkurekisteriä. Yleensä se tallentaa tietoja, jotka kuuluvat aritmeettisten operaatioiden luokkaan.
- 2. EBX: tarkoittaa perusrekisteriä. Sillä on rooli epäsuorassa osoittamisessa.
- 3. EDX: sanoista Data Register. EDX auttaa muita rekistereitä.
- 4. EIP: Tulee sanoista Instruction Pointer. Sisältää suoritettavan toimialueen osoitteen.
- 5. ESP: Sisältää perusosoitteen.
- 6. ESI: Sisältää lähdehakemistotiedot.
- 7. EDI: Säilyttää kohdehakemistotiedot.
Sinun tulisi tutkia kaikkia näitä erikseen ymmärtääksesi niiden vivahteet. Mutta jos katsot perusasiat ja yrität ymmärtää liiketoimintalogiikkaa, riippumatta siitä, minkä prosessorin arkkitehtuurilla työskentelet, koodianalyysi käänteissuunnittelussa on melko helppoa.
Käänteinen suunnittelu alkaa usein konekoodilla. Saatat ymmärtää monia yllä olevista termeistä, jos tunnet kokoonpanon tai hallitset sen 32- tai 64-bittinen prosessoriarkkitehtuuri. Jos haluat oppia kokoonpanon alusta alkaen, se on erittäin hyödyllinen käänteissuunnittelussa.
Mitä aiot tehdä tällä kaikella?
Jos sinulla on hyvät tiedot käänteissuunnittelusta, voit tehdä koodianalyysin riippumatta siitä, minkä käyttöjärjestelmän tai prosessoriarkkitehtuurin kanssa työskentelet. On esimerkiksi mahdollista löytää krakattuja versioita monista ohjelmista tai tietokonepeleistä. Tämä on täysin laiton menetelmä.
Jos aiot kuitenkin olla eettisen kyberturvallisuuden ammattilainen, sinun on käytettävä käänteisiä suunnittelijoita ymmärtääksesi, miksi näitä murrettuja ohjelmia murretaan. Jos haluat edetä käänteisessä suunnittelussa tai olet vasta aloittamassa, olisi hyvä valinta, jos yrität oppia laitteiston ja konekoodin välisestä suhteesta.