Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Ingeniører må noen ganger tenke i revers for å analysere et produkt. For eksempel kan en maskiningeniør trekke konklusjoner om et produkts produksjon basert på dets design og fysiske egenskaper. De kan til og med være i stand til å produsere det samme produktet hvis de har en grundig forståelse av det.

Du kan også sammenligne omvendt konstruksjon med bevisene til matematiske ligninger. Så hvordan brukes revers engineering?

Hva er reverse engineering?

Omvendt engineering er prosessen med å analysere et system med det formål å reprodusere eller forbedre det. Hvis du ser på arbeidsområdene til revers engineering, kan du se at du kan bruke den til mange forskjellige formål. Hvis du ser på det fra et cybersikkerhetsperspektiv, er det mulig å utføre følgende operasjoner med omvendt utviklingsmetoder:

  • Kildeanalyse av programvare uten åpen kildekode
  • Sårbarhetsanalyse
  • Analyse av skadelig programvare
  • Sprekking og lapping

Du kan se omvendt engineering brukt selv i dataspill i dag. For eksempel lager utviklere ofte programvaremods ved å bruke reverse engineering-metoder.

Innen omvendt engineering er det to forskjellige analysemetoder: statisk og dynamisk. Du utfører statisk analyse når du analyserer et program uten egentlig å kjøre det. En dynamisk analysemetode krever derimot at du kjører programmet for å observere dets oppførsel og dataene det bruker.

Men før du utfører analyse for reverse engineering, er det noen viktige begreper du trenger å vite om hvordan datamaskinarkitektur fungerer.

Hoveddeler av datamaskinarkitektur

Omvendt engineering er praktisk talt umulig med mindre du forstår datamaskinarkitektur. Du må studere de fire hoveddelene:

  • Inndata: Et sett med metoder for å legge inn data.
  • prosessor: CPU-en behandler innkommende data og overfører dem til sine eiere. Det er den sentrale behandlingsenheten.
  • Hukommelse: Plassen som midlertidig holder data under behandling.
  • Produksjon: Resultatet som sluttbrukeren ser.

Du kan ha alle disse hovedproblemene i bakhodet med et eksempel, som når du trykker på bokstaven A på tastaturet. Når du trykker på den, oppstår en inndatahendelse. Etter dette stadiet behandler CPU dataene og bruker en liten plass i minnet til å lagre dem. Til slutt vil du se bokstaven A på skjermen, og avslutter prosessen med utdata.

Dykk inn i dypet av CPU

Hvis du virkelig ønsker å bli en ekspert på reverse engineering og dykke dypt inn i dette emnet, må du ha detaljert kunnskap om maskinvare, lavnivåspråk og spesielt CPU. Hovedemnene du trenger å vite om CPU er:

  1. Kontrollenhet: Denne er ansvarlig for behandlingen av data i CPU og overføringen til de relevante feltene. Du kan tenke på denne enheten som en rutekontrollmekanisme.
  2. ALU: Dette står for Arithmetic Logic Unit. Det er her noen aritmetiske og logiske operasjoner finner sted. Hvis du graver dypere inn i matematikken, vil du se at de fire grunnleggende operasjonene i hovedsak er variasjoner av addisjon. Så ALU er basert på aggregering. For eksempel, å trekke to fra tre er det samme som å legge til minus to til tre.
  3. Registrerer: Dette er områdene inne i CPUen som inneholder de behandlede dataene. Det finnes forskjellige typer registre, omtrent som det er forskjellige typer variabler i et programmeringsspråk. Et register er ansvarlig for å opprettholde typen og attributtene til dataene som er tildelt det.
  4. Signaler: Hvis du vil at CPU-en skal utføre mange forskjellige operasjoner samtidig, er det nødvendig med en eller annen metode for å organisere dem. Elementene som gjør dette kalles signaler. Hver transaksjon handler i henhold til signaler som sikrer at den ikke forstyrrer en annen prosess.
  5. Buss: Banen som brukes av dataene for å flytte fra en enhet til en annen. Legg merke til hvordan navnet antyder transport.

Konsepter du ofte vil høre i reverse engineering

Å forstå hvordan prosessoren behandler data og lagrer dem i minnet, sammen med konseptet med registre, kan være svært nyttig ved omvendt utvikling. Spesielt kan du bruke diagrammet nedenfor for å bedre forstå konseptet med minne:

Til slutt, for omvendt ingeniøranalyse, må du kjenne til noen grunnleggende konsepter om registre. De er et av temaene du vil fokusere mest på. Her er noen forklaringer om data, pekere og indeksregistre som vil være nyttige for deg på den mest konsise måten:

  • 1. EAX: Står for Akkumulatorregister. Den lagrer vanligvis data som faller inn under kategorien aritmetiske operasjoner her.
  • 2. EBX: Står for Base Register. Det spiller en rolle i indirekte adressering.
  • 3. EDX: Står for Dataregister. EDX hjelper andre registre.
  • 4. EIP: Står for Instruction Pointer. Inneholder adressen til domenet som skal kjøres.
  • 5. ESP: Inneholder baseadressen.
  • 6. ESI: Holder kildeindeksinformasjonen.
  • 7. EDI: Beholder destinasjonsindeksinformasjonen.

Du bør undersøke alle disse separat for å forstå nyansene deres. Men hvis du ser på det grunnleggende og prøver å forstå forretningslogikken, uansett hvilken prosessorarkitektur du jobber med, vil kodeanalyse for omvendt utvikling være ganske enkelt.

Omvendt engineering begynner ofte med maskinkode. Du forstår kanskje mange av begrepene ovenfor hvis du er kjent med montering eller har beherskelse av 32-bits eller 64-bits prosessorarkitekturer. Hvis du ønsker å lære montering fra grunnen av, vil det være ekstremt nyttig i omvendt engineering.

Hva vil du gjøre med alt dette?

Hvis du har god kjennskap til reverse engineering, kan du gjøre kodeanalyse uansett hvilket operativsystem eller prosessorarkitektur du jobber med. For eksempel er det mulig å finne crackte versjoner av mange programmer eller dataspill. Dette er en helt ulovlig metode.

Imidlertid, hvis du skal være en etisk cybersikkerhetsprofesjonell, må du bruke omvendte ingeniører for å forstå hvorfor disse sprukne programmene blir sprakk. Hvis du ønsker å avansere i revers engineering eller er i ferd med å starte, vil det være et godt valg hvis du prøver å lære om forholdet mellom maskinvare og maskinkode.